Tôi đã tìm kiếm xung quanh và thực sự không tìm thấy câu trả lời rõ ràng khi nào bạn muốn sử dụng .First
và khi nào bạn muốn sử dụng .FirstOrDefault
với LINQ.
Khi nào bạn muốn sử dụng
.First
? Chỉ khi nào bạn muốn bắt ngoại lệ nếu không có kết quả nào được trả về?var result = List.Where(x => x == "foo").First();
Và khi nào bạn muốn sử dụng
.FirstOrDefault
? Khi bạn luôn muốn loại mặc định nếu không có kết quả?var result = List.Where(x => x == "foo").FirstOrDefault();
Và đối với vấn đề đó, còn Take?
var result = List.Where(x => x == "foo").Take(1);
Single
và SingleOrDefault
. Tôi ghét khi mọi người sử dụng First
khi họ thực sự có ý nghĩa Single
; )
.FirstOrDefault()
luôn mang đến cho bạn cơ hội để đưa ra một ngoại lệ có ý nghĩa hơn. Nếu một ngoại lệ chuỗi được ném và nhiều hơn một .First()
trong một phương thức, có thể khó nhận ra câu lệnh nào là vấn đề.
.First
và.FirstOrDefault
cả hai đều lấy các vị từ làm đối số, do đóvar result = List.Where(x => x == "foo").First();
có thể được viết lại thànhvar result = List.First(x => x == "foo");