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))