LINQ如何强制查询实现?

时间:2010-06-16 22:45:56

标签: c# linq

假设我有简单的LINQ扩展:

var filtered = data.Where(i => i.Count > 0);

我知道除非我开始使用过滤,即

,否则不会对此进行评估
foreach(DataItem i in filtered) ...

但是我需要创建data的克隆版本并尽快发布数据。 data可以在其他线程中更改,因此我想立即获取它的快照。

如何立即强制filtered进行评估?

3 个答案:

答案 0 :(得分:11)

var filtered = data.Where(i => i.Count > 0).ToArray();

// or

var filtered = data.Where(i => i.Count > 0).ToList();

答案 1 :(得分:7)

要获得一个填充了枚举结果的列表,请调用ToList(),即

var filtered = data.Where(i => i.Count > 0).ToList(); 

答案 2 :(得分:1)

使序列副作用:

var filtered = data.Where(i => i.Count > 0).Run();

您可能想要探索Reactive Extension for .NET 3.5/4.0