我有一个对象列表,每个对象都有一个 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)

在尝试分配值之前,可能是个好主意。

10-05 23:52