SERİ: SingleOrDefault vs FirstOrDefault() filtreleme kriterleri ile
IEnumerable uzatma yöntemleri SingleOrDefault()
FirstOrDefault()
düşünün
MSDN documents that SingleOrDefault
:
Döner bir dizi, ya da eğer sıra boşsa varsayılan değer yegane unsur; bu yöntem ise sırayla birden fazla öğe varsa, bir istisna atar.
FirstOrDefault
from MSDN muhtemelen OrderBy()
OrderByDescending()
ya da hiç bir kullanarak (), oysa
Döndürür bir dizinin ilk elemanı
Örnek sorgular bir avuç düşünün, bu iki yöntem ne zaman kullanılmalı: 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
Kuralları takip veya ne önerirsinizsenin SERİ SingleOrDefault()
FirstOrDefault()
kullanmaya karar sorguladığında?
CEVAP
Eğer sonuç verir 0 kayıt kümesi:
SingleOrDefault
tipi (int, örneğin, varsayılan 0) için varsayılan değerini döndürürFirstOrDefault
türü için varsayılan değeri döndürür
Eğer sonuç kümesi 1 Kayıt verir:
SingleOrDefault
o kaydı döndürürFirstOrDefault
o kaydı döndürür
Sonuç kümesi döndürür birçok kayıtları:
SingleOrDefault
bir istisna atarFirstOrDefault
ilk kaydı döndürür
Sonuç:
Eğer bir istisna varsa, sonuç kümesi çok sayıda kayıt içeriyorsa atılmış olmak istiyorsanız, SingleOrDefault
kullanın.
Eğer sen her zaman 1 Kayıt sonuç kümesini içerir ne olursa olsun istiyorsanız, FirstOrDefault
kullanın
SERİ İsteğe bağlı Kriterleri Where SQL...
Kullanma zamanı .Kullanmaya ilk ne zam...
`..` ya da `FirstOrDefault` SERİ içind...
Jackson (JSON) - " ile seri hale g...
Nasıl XElement veya SERİ ile XPath kul...