延遲執行的好處 - 查詢當前資料

使用延遲執行時,如果要查詢的資料發生更改,查詢物件將在執行時使用資料,而不是在定義時使用。

var data = new List<int>() {2, 4, 6, 8};
var query = data.Select(x => x * x);

如果我們使用立即方法或 foreach 在此時執行查詢,則查詢將在偶數列表上執行。

但是,如果我們更改列表中的值:

data.Clear();
data.AddRange(new [] {1, 3, 5, 7, 9});

或者即使我們為 data 分配一個新列表:

data = new List<int>() {1, 3, 5, 7, 9};

然後執行查詢,查詢將對 data 的新值進行操作:

foreach (var x in query) {
    Console.Write($"{x} ");
}

並將輸出以下內容:

1 9 25 49 81