首页 > 后端开发 > C++ > 如何使用LINQ有效地找到最早出生日期的人?

如何使用LINQ有效地找到最早出生日期的人?

Linda Hamilton
发布: 2025-02-01 03:51:07
原创
652 人浏览过

How Can I Efficiently Find the Person with the Earliest Birth Date Using LINQ?

使用LINQ获取具有极值属性的对象

LINQ中的Min()Max()方法可以用来查找特定属性值最小或最大的对象。但是,当处理可为空的属性时,可能会出现一些额外的考虑。

确定最早出生日期的人

假设您有一个Person对象的列表,其中包含一个可以为空的DateOfBirth属性。您希望使用LINQ查找最早出生日期的人。

一种方法是使用Min()方法获取最小的DateOfBirth值:

var firstBornDate = People.Min(p => p.DateOfBirth.GetValueOrDefault(DateTime.MaxValue));
登录后复制

但是,这只会提供日期本身。如果您想要相应的Person对象,您可以进行另一个查询:

var firstBorn = People.Single(p => (p.DateOfBirth ?? DateTime.MaxValue) == firstBornDate);
登录后复制

更高效的解决方案

与其使用两个查询,不如使用Aggregate()方法将操作组合起来:

var firstBorn = People.Aggregate((curMin, x) => (curMin == null || (x.DateOfBirth ?? DateTime.MaxValue) < (curMin.DateOfBirth ?? DateTime.MaxValue)) ? x : curMin);
登录后复制

这段代码迭代集合,将当前最小值存储在curMin中。当遇到DateOfBirth较早的Person对象时,它将替换当前最小值。结果是具有最早出生日期的Person对象。

以上是如何使用LINQ有效地找到最早出生日期的人?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板