我有一个对象列表,每个对象都有一个 ExpirationDate 属性,该属性的类型为 DateTime 。我想检索列表中的最新日期。是否有通过LINQ做到这一点的优雅方法?
就像是:
DateTime latestDate = myCollection.Where(r=>r.ExpirationDate.HasValue).MaxDate(r=>r.ExpirationDate.Value);
最佳答案
DateTime? latestDate = myCollection.Max(r => r.ExpirationDate);
Intellisense应该已经为您提供了Max()方法。 =)
现在,如果必须将其分配给DateTime,我将考虑这样做:
DateTime latestDate = myCollection.Where(r => r.ExpirationDate.HasValue)
.Max(r => r.ExpirationDate)
.Value;
这将不涉及空集合或仅具有空ExpirationDates的集合的情况。
根据您先前的逻辑,检查
myCollection.Any(r => r.ExpirationDate.HasValue)
在尝试分配值之前,可能是个好主意。