我正在调查某项操作的性能。我正在迭代集合中的项目子集。我使用 Linq 查询过滤这个集合。它基本上看起来像这样:
var filteredItems = items.Where(x => x.PropertyToFilterOn == filterValue);
foreach (var filteredItem in filteredItems)
{
// do something to the filtered item
}
如果我使用 Select
而不是 Where
我会达到同样的目的。哪个更好用,有什么区别?
最佳答案
Where 和 Select 肯定达不到同样的目的。
Where
根据谓词过滤枚举。在 IEnumerable<T>
上调用 Where 的结果是IEnumerable<T>
.
Select
是一个投影 - 它允许您映射可枚举对象,例如仅选择枚举类型属性的子集,或完全基于枚举类型的值构造不同的对象。
where 和 select 都至少为 O(n) - 因为必须访问枚举中的每个项目才能执行投影或筛选。
以下关于标准查询运算符的文档是一个很好的引用。
关于c# - Linq "Where"比 Linq "Select"贵吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2070319/