オブジェクトのリストがあり、各オブジェクトには有効期限タイプのプロパティ日付時刻リスト内の最新の日付を取得したいのですが、LINQ を使用してそれを実行するエレガントな方法はありますか?
何かのようなもの:
DateTime latestDate = myCollection.Where(r=>r.ExpirationDate.HasValue).MaxDate(r=>r.ExpirationDate.Value);
ベストアンサー1
DateTime? latestDate = myCollection.Max(r => r.ExpirationDate);
Intellisense は Max() メソッドを提供するはずです。=)
さて、これを DateTime に割り当てる必要がある場合は、次のようにすることを検討します。
DateTime latestDate = myCollection.Where(r => r.ExpirationDate.HasValue)
.Max(r => r.ExpirationDate)
.Value;
空のコレクションや、ExpirationDates が null のみのコレクションの場合は対象になりません。
先ほどのロジックに応じて、
myCollection.Any(r => r.ExpirationDate.HasValue)
値を割り当てる前に、これを試してみるとよいでしょう。