Cor*_*ker 3 c# linq collections performance select
我正在研究一项手术的表现.我正在迭代集合中的一部分项目.我使用Linq查询过滤此集合.它基本上看起来像这样:
var filteredItems = items.Where(x => x.PropertyToFilterOn == filterValue);
foreach (var filteredItem in filteredItems)
{
// do something to the filtered item
}
Run Code Online (Sandbox Code Playgroud)
如果我用Select而不是Where我实现同样的事情.哪个更好用,有什么区别?
Where和Select肯定没有达到同样的效果.
Where根据谓词过滤可枚举.调用Where的结果IEnumerable<T>是IEnumerable<T>.
Select 是一个投影 - 它允许您映射可枚举,例如,仅选择枚举类型的属性的子集,或完全基于枚举类型的值构造不同的对象.
where和select都至少为O(n) - 因为必须访问枚举中的每个项目以执行投影或过滤器.
关于标准查询运算符的以下文档是一个很好的参考.
Where过滤器,Select地图.两件完全不同的东西.