SORU
16 Kasım 2009, PAZARTESİ


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
21 Ocak 2011, Cuma


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ür
  • FirstOrDefault 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ür
  • FirstOrDefault o kaydı döndürür

Sonuç kümesi döndürür birçok kayıtları:

  • SingleOrDefault bir istisna atar
  • FirstOrDefault 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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HDstarcraft

    HDstarcraft

    12 Mayıs 2009
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008
  • spectragirlz16's channel

    spectragirlz

    22 Ocak 2012