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();

Let with Linq节省了双枚举而不是使用扩展方法样式

Select不枚举查询—只有迭代foreach或将ToListToArray组合在一起才会实际执行查询。所以不,你没有枚举集合两次