2011-01-10 33 views
7

Tôi đang sử dụng truy vấn LINQ như dưới đây.LINQ - Trình tự không chứa các phần tử

object.collection.where(t => t.id.Equals("2")).First(); 

Tôi gặp lỗi "Trình tự không chứa phần tử". Tại sao kết quả lại gây ra lỗi khi kết quả không chứa các phần tử? Nó có nên trả về null khi không tìm thấy kết quả nào không? Đó là những gì xảy ra khi sử dụng SQL.

Trả lời

5
object.collection.where(t => t.id.Equals("2")).FirstOrDefault(); 
16

Nó hoạt động như được thiết kế. Phương thức First() sẽ được gọi khi nó được biết ít nhất một hàng sẽ được trả về. Khi không phải như vậy, hãy gọi FirstOrDefault().

+1

Lý do có hai biến thể đầu tiên là nhận ngoại lệ cụ thể để thực hiện gỡ lỗi dễ dàng hơn. Thay vì một ngoại lệ tham chiếu null mơ hồ, bạn nhận được một chuỗi "cụ thể hơn không chứa các phần tử" cụ thể. –

Các vấn đề liên quan