LINQ提供了一种强大而高效的方式来查询数据。它在根据特定条件选择对象时特别有用,例如查找特定属性值最小或最大的对象。
假设您有一个包含Person对象的列表,这些对象具有可为空的DateOfBirth属性。您可能需要确定出生日期最早的人。
一种方法是使用Min方法查找DateOfBirth属性的最小值。但是,这只会返回最小日期值,而不是实际的Person对象。
要获取相应的对象,您可以使用Aggregate方法:
<code class="language-csharp">var firstBorn = People.Aggregate((curMin, x) => (curMin == null || (x.DateOfBirth ?? DateTime.MaxValue) < (curMin.DateOfBirth ?? DateTime.MaxValue)) ? x : curMin);</code>
Aggregate方法采用两个参数:初始累加器值和一个函数,该函数将当前累加器和序列中的每个元素组合起来以生成新的累加器值。
在本例中,初始累加器值设置为null。传递给Aggregate方法的函数检查当前累加器值是否为null,或者当前元素的DateOfBirth属性(用DateTime.MaxValue替换null值)是否早于当前累加器的DateOfBirth属性。如果为真,则该函数返回当前元素作为新的累加器;否则,它返回当前累加器。
Aggregate的结果是出生日期最早的Person对象。这种更简洁的方法无需进行第二次查询来检索相应对象。
以上是如何使用LINQ找到最早的出生日期的人?的详细内容。更多信息请关注PHP中文网其他相关文章!