Lợi ích của Deferred Execution trong LINQ là gì?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
250 lượt xem
C#/.Net master

Trong LINQ, các truy vấn có hai hành vi thực thi khác nhau: immediate (ngay lập tức) và deferred (trì hoãn).

Deferred execution có nghĩa là đánh giá một biểu thức bị trì hoãn (delay) cho đến khi giá trị thực của nó thực sự được yêu cầu. Nó cải thiện đáng kể hiệu suất bằng cách tránh thực thi không cần thiết.

var results = collection.Select(item => item.Foo).Where(foo => foo < 3).ToList();

Với deferred execution, đoạn mã trên lặp qua collection của bạn một lần và mỗi khi một mục được yêu cầu trong quá trình lặp, chúng thực hiện thao tác map, filter, sau đó sử dụng kết quả để xây dựng nên danh sách.

Nếu bạn muốn LINQ thực thi đầy đủ mỗi lần, mỗi thao tác (Select / Where) sẽ phải lặp qua toàn bộ collection. Điều này sẽ làm cho chuỗi hoạt động rất kém hiệu quả.

{{login.error}}