NULL ile alınabilen bir DateOfBirth özelliğine sahip bir Kişi nesnesine sahibim. En erken/en küçük DateOfBirth değerine sahip olan Kişi nesneleri listesini sorgulamak için LINQ kullanmanın bir yolu var mı. (En az bir belirtilen bir DOB vardır varsayarak)Minimum veya maksimum özellik değeri olan nesneyi seçmek için LINQ nasıl kullanılır
var firstBornDate = People.Min(p => p.DateOfBirth.GetValueOrDefault(DateTime.MaxValue));
Boş DateOfBirth değerleri Min dikkate dışına ekarte etmek için DateTime.MaxValue ayarlanır:
İşte başladı budur.
Ancak, benim için olan tüm şey, firstBornDate değerini bir DateTime değerine ayarlamaktır. Benim elde etmek istediğim, onunla eşleşen Kişi nesnesi.
var firstBorn = People.Single(p=> (p.DateOfBirth ?? DateTime.MaxValue) == firstBornDate);
Veya bunu yapmanın bir yalın bir yolu vardır: Öyle gibi ikinci sorgu yazmak gerekiyor mu?
Örneğinize bir yorum: Muhtemelen burada Single kullanmamalısınız. İki Kişi aynı DateOfBirth – Niki
'a sahip olsaydı bir istisna atardı. Neredeyse aynı kopyaya sahip olan http://stackoverflow.com/questions/2736236/how-to-use-linq-to-find-the-minimum adresine bakın. özlü örnekler. – goodeye
Ne kadar basit ve kullanışlı bir özellik. MinBy standart kütüphanede olmalı. Microsoft'a bir çekme isteği göndermeliyiz. Https://github.com/dotnet/corefx –