LINQ を使用して最小または最大のプロパティ値を持つオブジェクトを選択する方法 質問する

LINQ を使用して最小または最大のプロパティ値を持つオブジェクトを選択する方法 質問する

Nullable DateOfBirth プロパティを持つ Person オブジェクトがあります。LINQ を使用して、Person オブジェクトのリストを照会し、最も早い/最も小さい DateOfBirth 値を持つオブジェクトを検索する方法はありますか?

私が最初に始めたのは次の通りです:

var firstBornDate = People.Min(p => p.DateOfBirth.GetValueOrDefault(DateTime.MaxValue));

Null の DateOfBirth 値は、Min の考慮から除外するために DateTime.MaxValue に設定されます (少なくとも 1 つに DOB が指定されていると想定)。

しかし、これでできることは firstBornDate を DateTime 値に設定することだけです。私が取得したいのは、それに一致する Person オブジェクトです。次のような 2 番目のクエリを記述する必要がありますか。

var firstBorn = People.Single(p=> (p.DateOfBirth ?? DateTime.MaxValue) == firstBornDate);

それとも、もっと簡単な方法があるのでしょうか?

ベストアンサー1

People.Aggregate((curMin, x) => (curMin == null || (x.DateOfBirth ?? DateTime.MaxValue) <
    curMin.DateOfBirth ? x : curMin))

おすすめ記事