LINQ如何强制查询实现?

Bop*_*Bop 4 c# linq

假设我有简单的LINQ扩展:

var filtered = data.Where(i => i.Count > 0);
Run Code Online (Sandbox Code Playgroud)

我知道除非我开始使用过滤 ie,否则不会评估

foreach(DataItem i in filtered) ...
Run Code Online (Sandbox Code Playgroud)

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

我如何强制filtered立即评估?

Luk*_*keH 11

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

// or

var filtered = data.Where(i => i.Count > 0).ToList();
Run Code Online (Sandbox Code Playgroud)

  • 在什么情况下我想使用`ToArray`而不是`ToList`? (4认同)

jba*_*all 7

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

var filtered = data.Where(i => i.Count > 0).ToList(); 
Run Code Online (Sandbox Code Playgroud)