Let with Linq节省了双枚举而不是使用扩展方法样式
本文关键字:扩展 样式 方法 Linq with 节省 枚举 Let | 更新日期: 2023-09-27 18:15:26
第一个查询将更频繁地枚举由于双。select()和let操作符消除真正的双枚举吗?
var y = product.Documents
.Where(p => p.Type == "test_DOC")
.Select(p => GetPathToLabel(p.Name))
.Select(path => FileExists(path) ? File.ReadAllBytes(path) : null)
.Where(data => data != null)
.ToList();
var x = (from p in product.Documents
where p.Type == "test_DOC"
let path = GetPathToLabel(p.Name)
let data = FileExists(path) ? File.ReadAllBytes(path) : null
where data != null
select data).ToList();
Select
不枚举查询—只有迭代foreach
或将ToList
或ToArray
组合在一起才会实际执行查询。所以不,你没有枚举集合两次