L.Any()
, L.FirstOrDefault()
sẽ khá nhiều cả hai đều có hiệu năng giống như họ có thực hiện gần như giống hệt nhau và có lẽ là những gì bạn đang tìm kiếm. SingleOrDefault của bạn có lẽ không chủ ý vì nó sẽ ném một ngoại lệ nếu có nhiều hơn một kết quả.
Performance of LINQ Any vs FirstOrDefault != null
Điều đáng nói là một số điều này tùy thuộc vào nhà cung cấp của bạn. IQueryable chỉ ngụ ý một ý định. Nếu đó là Linq2Sql hoặc một cái gì đó sau đó có L.Count() sẽ yêu cầu thêm tài nguyên - ngoại trừ việc bạn cũng gọi OneOrDefault trong dòng trên có nghĩa là kiểm tra null của bạn là tất cả ... Điện thoại
Nếu tôi chạy tuyên bố này đối với nhà cung cấp LINQ, tôi viết bản thân mình (hoặc Amazons, hoặc bất kỳ nhà cung cấp LINQ nào khác) .Count() có thể nhanh hơn tùy thuộc vào nhà cung cấp đang làm gì, nhưng giả định của bạn bằng cách sử dụng Microsoft Linq để triển khai SQL thông thường.
Nguồn
2012-02-23 14:22:11
Nếu bạn gọi 'SingleOrDefault', làm cách nào để 'L' là' IQueryable '? –
dtb
Bạn đúng, tôi không có '.SingleOrDefault' trong mã của tôi. Vui lòng chỉnh sửa điều đó trong tâm trí của bạn. – Kramer
Bạn có thể chỉnh sửa câu hỏi của mình bằng cách nhấp vào liên kết [chỉnh sửa] (http://stackoverflow.com/posts/9414805/edit) bên dưới câu hỏi của bạn. – dtb