我正在处理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();
答案 0 :(得分:0)
我认为linq选择的好处,它提供了延迟执行,而简单的foreach没有。如果你使用
yield return
默认情况下,您可以实现linq提供的功能。 我不知道是否有任何性能差异,但延迟执行可以为您节省大量内存。
答案 1 :(得分:0)
我建议您对代码进行单元/性能测试,以确定哪种代码更快。
这取决于你究竟在做什么。我的直觉是,LINQ查询(经过适当的性能测试和优化)将比您的工厂foreach循环更快。
LINQ-TO-SQL(已标记),据我所知,根据您的LINQ查询生成SQL命令,并针对数据源运行这些命令。这肯定会更快,因为根据查询,foreach循环作为数据源将仅返回您期望的内容,而foreach循环可能需要首先从SQL获取整个集合,然后迭代它。
如果您使用的是In-Memory集合,您可能需要调查LINQ vs foreach与Parallel.ForEach的速度。并行性“可能”比同等的LINQ执行速度更快,但同样需要对所有场景进行性能测试。