Saya telah mencari-cari dan belum benar-benar menemukan jawaban yang jelas kapan Anda ingin menggunakan .First
dan kapan Anda ingin menggunakannya .FirstOrDefault
dengan LINQ.
Kapan Anda ingin menggunakannya
.First
? Hanya ketika Anda ingin menangkap pengecualian jika tidak ada hasil yang dikembalikan?var result = List.Where(x => x == "foo").First();
Dan kapan Anda ingin menggunakannya
.FirstOrDefault
? Kapan Anda selalu ingin jenis default jika tidak ada hasil?var result = List.Where(x => x == "foo").FirstOrDefault();
Dan dalam hal ini, bagaimana dengan Take?
var result = List.Where(x => x == "foo").Take(1);
Single
dan SingleOrDefault
. Saya benci ketika orang menggunakan First
ketika mereka benar-benar berarti Single
; )
.FirstOrDefault()
selalu memberi Anda kesempatan untuk melemparkan pengecualian yang lebih bermakna. Jika pengecualian urutan dilemparkan dan lebih dari satu .First()
dalam suatu metode, mungkin sulit untuk membedakan pernyataan mana yang menjadi masalah.
.First
dan.FirstOrDefault
keduanya mengambil predikat sebagai argumen, sehinggavar result = List.Where(x => x == "foo").First();
dapat ditulis ulang sebagaivar result = List.First(x => x == "foo");