Saya telah mencari-cari dan belum benar-benar menemukan jawaban yang jelas kapan Anda ingin menggunakan .Firstdan kapan Anda ingin menggunakannya .FirstOrDefaultdengan 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);
Singledan SingleOrDefault. Saya benci ketika orang menggunakan Firstketika 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.


.Firstdan.FirstOrDefaultkeduanya mengambil predikat sebagai argumen, sehinggavar result = List.Where(x => x == "foo").First();dapat ditulis ulang sebagaivar result = List.First(x => x == "foo");