哪种方法更快 - foreach或LINQ选择?

时间:2013-06-28 15:25:38

标签: linq linq-to-sql

我正在处理List集合。以下哪个会执行得更快? 将结果中的项目数量视为1000。 方法1:

var linqResult = from item in databaseObject

选择项目;

foreach(customobject item in linqResult)
{
List<customobject>.add(item);
}

方法2

var data = from item in databaseObject
select new customobject()
{
//initialize properties
});

data.ToList();

2 个答案:

答案 0 :(得分:0)

我认为linq选择的好处,它提供了延迟执行,而简单的foreach没有。如果你使用  yield return

默认情况下,您可以实现linq提供的功能。 我不知道是否有任何性能差异,但延迟执行可以为您节省大量内存。

答案 1 :(得分:0)

  1. 我建议您对代码进行单元/性能测试,以确定哪种代码更快。

  2. 这取决于你究竟在做什么。我的直觉是,LINQ查询(经过适当的性能测试和优化)将比您的工厂foreach循环更快。

  3. LINQ-TO-SQL(已标记),据我所知,根据您的LINQ查询生成SQL命令,并针对数据源运行这些命令。这肯定会更快,因为根据查询,foreach循环作为数据源将仅返回您期望的内容,而foreach循环可能需要首先从SQL获取整个集合,然后迭代它。

  4. 如果您使用的是In-Memory集合,您可能需要调查LINQ vs foreach与Parallel.ForEach的速度。并行性“可能”比同等的LINQ执行速度更快,但同样需要对所有场景进行性能测试。