c# - Linq "Where"比 Linq "Select"贵吗?

标签 c# linq performance select collections

我正在调查某项操作的性能。我正在迭代集合中的项目子集。我使用 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) - 因为必须访问枚举中的每个项目才能执行投影或筛选。

以下关于标准查询运算符的文档是一个很好的引用。

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

关于c# - Linq "Where"比 Linq "Select"贵吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2070319/

相关文章:

c# - 如何在 Windows 中获取光标下的单词?

javascript - Selebiun 爬虫超时问题 C#

C# LINQ 优化

c# - 正则表达式操作成本

performance - 无点样式的性能含义

c# - Unity3D - 敌人没有受到伤害

c# - 如何使用 jQuery 在对话框中打开页面?

c# - linq中的动态投影

c# - ODAC/Oracle 等同于 Linq to Entities GroupBy FirstOrDefault

mysql - 在 MySQL 中恢复 20GB 需要多长时间? (A.k.a. 有什么东西坏了吗?)