1. Deferred Execution (Trì hoãn)

Ta có ví dụ sau

1.png

 

Có vẻ như , câu query được thực hiện ngay tại thời điểm nó được khai báo.

Nhưng không phải,  nó được thực hiện khi biến query được sử dụng trong vòng lặp for hoặc foreach.

Nếu thêm phần tử vào listStudent kết quả sẽ thay đổi

1.png

Trường hợp này được gọi là deferred execution, được thực thi khi được duyệt trong vòng for hay foreach, không phải lúc khởi tạo

  1. Immediate Execution (Ngay lập tức)

Trái ngược với Deferred, câu query Immediate Execution thực hiện ngay lúc khởi tạo.

Nó xử dụng các extension method như ToList(), ToArray() trong trường hợp  trả về nhiều giá trị

1

 

  1. Query Reuse

Nhờ có deferred execution mà ta có thể định nghĩa query 1 lần và tái sử dụng khi thay đổi data

u.png

SOURCE https://github.com/Trung1234/DotnetProject/blob/master/LinqDemo/LinqDemo/Program.cs

Tham khảo

https://toidicodedao.com/2015/03/26/series-c-hay-ho-linq/

http://www.tutorialsteacher.com/linq/linq-deferred-execution