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 .Firstvà khi nào bạn muốn sử dụng .FirstOrDefaultvớ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);
Singlevà SingleOrDefault. Tôi ghét khi mọi người sử dụng Firstkhi 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 đề.


.Firstvà.FirstOrDefaultcả 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");