IEnumerable uzantı yöntemlerini göz önünde bulundurun SingleOrDefault()
veFirstOrDefault()
MSDN aşağıdakileri belgelemektedirSingleOrDefault
:
Bir dizinin tek öğesini veya dizi boşsa varsayılan değeri döndürür; sekansta birden fazla eleman varsa bu yöntem bir istisna atar.
oysa FirstOrDefault
gelen MSDN'den (muhtemelen bir kullanıldığında OrderBy()
ya da OrderByDescending()
, hiç ya da yok)
Bir dizinin ilk öğesini döndürür
Bir kaç örnek sorguyu düşünün, bu iki yöntemi ne zaman kullanacağınız her zaman açık değildir:
var someCust = db.Customers
.SingleOrDefault(c=>c.ID == 5); //unlikely(?) to be more than one, but technically COULD BE
var bobbyCust = db.Customers
.FirstOrDefault(c=>c.FirstName == "Bobby"); //clearly could be one or many, so use First?
var latestCust = db.Customers
.OrderByDescending(x=> x.CreatedOn)
.FirstOrDefault();//Single or First, or does it matter?
Soru
Kullanmaya karar verirken SingleOrDefault()
ve FirstOrDefault()
LINQ sorgularınızda hangi kuralları izliyorsunuz veya öneriyorsunuz ?