c# - LINQ 查询重用和延迟执行

标签 c# linq linq-to-objects

我的印象是我可以创建一个 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/

相关文章:

c# - BindingSource.Filter 不适用于 '!='

c# - 为什么 "Func<bool> test = value ? F: F"不编译?

c# linq 生成的查询长度超过限制。有什么办法可以提高这个限制吗?

c# - 如何使用 LINQ 从集合的开头查找子集?

c# - 如何使用 Linq 从 List<Rectangle[]> 中选择矩形

Linq 将整数子列表与整数列表相交

c# - 建筑问题: solutions sharing same class libraries; project promotion; forking solutions

c# - 如何为日期格式 MM/DD/YYYY HH :MM:SS am/pm in ASP. NET 应用正则表达式

c# - 在单词列表中查找 "hook words"的有效方法?

c# - Lambda 表达式 - 选择运算符