延迟执行的好处 - 查询当前数据

使用延迟执行时,如果要查询的数据发生更改,查询对象将在执行时使用数据,而不是在定义时使用。

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