如何使用LINQ选择具有最小或最大属性值的对象我有一个Person对象,它具有Nullable DateOfBirth属性。是否有一种方法可以使用LINQ查询具有最早/最小DateOfBirth值的Person对象列表。以下是我开始的想法:var firstBornDate = People.Min(p => p.DateOfBirth.GetValueOrDefault(DateTime.MaxValue));NULL DateOfBirth值被设置为DateTime.MaxValue,以便将它们排除在Min考虑范围之外(假设至少有一个指定的道布)。但是,对我来说,所做的就是将FirstBornDate设置为日期时间值。我想得到的是与之匹配的Person对象。是否需要编写第二个查询,如:var firstBorn = People.Single(p=> (p.DateOfBirth ?? DateTime.MaxValue) == firstBornDate);还是有一种更精简的方法?
3 回答
达令说
TA贡献1821条经验 获得超6个赞
People.Aggregate((curMin, x) => (curMin == null || (x.DateOfBirth ?? DateTime.MaxValue) < curMin.DateOfBirth ? x : curMin))
aluckdog
TA贡献1847条经验 获得超7个赞
People
People
var oldest = People.OrderBy(p => p.DateOfBirth ?? DateTime.MaxValue).First();
List<T>
DateOfBirth
IEnumerable<T>
Aggregate()
MaxBy()
/MinBy()
OrderBy()
SortedList<T>
- 3 回答
- 0 关注
- 1405 浏览
添加回答
举报
0/150
提交
取消