LINQ を使用してオブジェクトのコレクションから最新の日付を取得するにはどうすればよいでしょうか? 質問する

LINQ を使用してオブジェクトのコレクションから最新の日付を取得するにはどうすればよいでしょうか? 質問する

オブジェクトのリストがあり、各オブジェクトには有効期限タイプのプロパティ日付時刻リスト内の最新の日付を取得したいのですが、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)

値を割り当てる前に、これを試してみるとよいでしょう。

おすすめ記事