Bạn có loại mặc định mà bạn muốn sử dụng trong các giao dịch của mình với kết quả truy vấn LINQ không?Bạn có ToList() không?
Theo mặc định LINQ sẽ trả lại IEnumerable<>
hoặc có thể là IOrderedEnumerable<>
. Chúng tôi nhận thấy rằng List<>
thường hữu ích hơn đối với chúng tôi, vì vậy, chúng tôi đã áp dụng thói quen ToList()
truy vấn của chúng tôi hầu hết thời gian và chắc chắn sử dụng List<>
trong đối số và giá trị trả về của chúng tôi.
Ngoại lệ duy nhất cho điều này đã nằm trong LINQ to SQL trong đó gọi .ToList()
sẽ liệt kê số IEnumerable
sớm.
Chúng tôi cũng đang sử dụng rộng rãi WCF, loại bộ sưu tập mặc định là System.Array
. Chúng tôi luôn thay đổi điều này thành System.Collections.Generic.List
trong hộp thoại Cài đặt tham chiếu dịch vụ trong VS2008 để phù hợp với phần còn lại của codebase của chúng tôi.
Bạn làm nghề gì?
Đồng ý rằng ToList đánh giá ngay lập tức. Suy nghĩ của chúng tôi là trong LINQtoSQL, điều này có thể có tác động đến hiệu suất (đặc biệt là nếu chúng ta kết hợp với nhau một vài biểu thức LINQ), nhưng khi chúng ta đang ở trong bộ nhớ, bất kỳ hiệu suất nào cũng có thể bỏ qua - và tính nhất quán của con người quan trọng. –
Có sự khác biệt đáng kể ngoài hiệu suất. Đặc biệt, nếu có bất kỳ điều gì về truy vấn (ví dụ: dữ liệu trong nguồn) thay đổi, thì việc thực thi hoãn lại sẽ cung cấp cho bạn một câu trả lời khác. Đôi khi đó là những gì bạn muốn, đôi khi nó không phải là. –