假设我有简单的LINQ扩展:
var filtered = data.Where(i => i.Count > 0);
我知道除非我开始使用过滤,即
,否则不会对此进行评估foreach(DataItem i in filtered) ...
但是我需要创建data
的克隆版本并尽快发布数据。 data
可以在其他线程中更改,因此我想立即获取它的快照。
如何立即强制filtered
进行评估?
答案 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();