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

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

Linda Hamilton
Linda Hamilton原创
2025-02-01 03:51:07654浏览

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

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

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

确定最早出生日期的人

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

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

<code class="language-csharp">var firstBornDate = People.Min(p => p.DateOfBirth.GetValueOrDefault(DateTime.MaxValue));</code>

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

<code class="language-csharp">var firstBorn = People.Single(p => (p.DateOfBirth ?? DateTime.MaxValue) == firstBornDate);</code>

更高效的解决方案

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

<code class="language-csharp">var firstBorn = People.Aggregate((curMin, x) => (curMin == null || (x.DateOfBirth ?? DateTime.MaxValue) < (curMin.DateOfBirth ?? DateTime.MaxValue)) ? x : curMin);</code>

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

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn