Linq"Where"比Linq"Select"更贵吗?

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我实现同样的事情.哪个更好用,有什么区别?

Win*_*ith 9

Where和Select肯定没有达到同样的效果.

Where根据谓词过滤可枚举.调用Where的结果IEnumerable<T>IEnumerable<T>.

Select 是一个投影 - 它允许您映射可枚举,例如,仅选择枚举类型的属性的子集,或完全基于枚举类型的值构造不同的对象.

where和select都至少为O(n) - 因为必须访问枚举中的每个项目以执行投影或过滤器.

关于标准查询运算符的以下文档是一个很好的参考.

http://download.microsoft.com/download/5/8/6/5868081c-68aa-40de-9a45-a3803d8134b8/standard_query_operators.doc


hel*_*ium 5

Where过滤器,Select地图.两件完全不同的东西.

  • @Johannes:这个问题断言了一些错误.这纠正了这些问题,基本上将问题标记为无效.是的它应该是一个评论,但不是一个完全无效的答案. (4认同)
  • @Johannes:不是吗?不同之处在于它们做了不同的事情,所以显然使用的更好的是实际做你想要的. (2认同)