2009-06-18 16 views
8

Tôi có một DAL bao gồm một loạt các phương thức thực hiện truy vấn LINQ trên cơ sở dữ liệu của tôi.Làm cách nào để đảm bảo các truy vấn LINQ của tôi thực thi khi được gọi trong DAL của tôi, không bị trễ?

Làm thế nào để đảm bảo rằng trước khi trở về nói một IEnumberable hoặc một cái gì đó tương tự từ cơ sở dữ liệu, tôi đảm bảo rằng truy vấn LINQ được thực hiện sau đó, không phải trong một số thời trang chậm trễ chỉ được thực hiện khi kết quả được sử dụng?

Tôi biết tôi có thể gọi .ToList() trên kết quả của tôi trong các phương pháp của tôi để buộc nó thực thi, nhưng đây có phải là cách tốt nhất không?

+2

Tại sao bạn không muốn thực thi hoãn lại? – Kev

Trả lời

13

Gọi ToList hoặc ToArray thực sự là cách tốt nhất để bắt buộc thực hiện và nhận toàn bộ chuỗi (xem nhận xét của Randolpho bên dưới để biết các phương pháp khác sẽ buộc thực thi cho các phần tử đơn lẻ).

Có lý do cụ thể nào bạn muốn tránh bị trì hoãn không?

+9

Đừng quên First(), Single() hoặc FirstOrDefault() hoặc SingleOrDefault() – Randolpho

+0

Rất đúng nhưng tôi nghĩ rằng họ muốn nhận được toàn bộ chuỗi. –

+1

tôi đã tự hỏi, không. BeforeOrDefault và các phương pháp tương tự buộc thực thi truy vấn LINQ? chỉ muốn xác nhận điều này ... –

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