Pertimbangkan metode ekstensi IEnumerable SingleOrDefault()
danFirstOrDefault()
Dokumen MSDN itu SingleOrDefault
:
Mengembalikan satu-satunya elemen urutan, atau nilai default jika urutannya kosong; Metode ini melempar pengecualian jika ada lebih dari satu elemen dalam urutan.
sedangkan FirstOrDefault
dari MSDN (mungkin saat menggunakan OrderBy()
atau OrderByDescending()
atau tidak sama sekali),
Mengembalikan elemen pertama dari suatu urutan
Pertimbangkan beberapa contoh kueri, tidak selalu jelas kapan harus menggunakan kedua metode ini:
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?
Pertanyaan
Konvensi apa yang Anda ikuti atau sarankan ketika memutuskan untuk menggunakan SingleOrDefault()
dan FirstOrDefault()
dalam pertanyaan LINQ Anda?