我的印象是我可以创建一个 LINQ 查询,然后在更改涉及的参数时重用它。但似乎您无法更改源集合。有人能给我一个很好的解释吗,因为我显然误解了一些基本的东西。
这是一些示例代码。
var source = Enumerable.Range(1, 10);
var value = source.Where(x => x > 5);
var first = value.ToArray();
source = Enumerable.Range(11, 20);
var second = value.ToArray();
我预计第一个是 6、7、8、9、10,第二个是 11 到 20。
最佳答案
当你这样做时:
source = Enumerable.Range(11, 20);
您正在创建一个新对象。但是,Where
查询仍然引用旧对象。
关于c# - LINQ 查询重用和延迟执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11565469/