c# Foreach vs Linq looping?
本文关键字:looping Linq vs Foreach | 更新日期: 2023-09-27 18:20:51
Foreach循环和LINQ循环之间的主要区别是什么?
哪一种性能更好,它们的缺点是什么。
我有两个不同的例子可以产生相同的结果:
foreach(var countryItem in input.availableCountries) {
var ddlItem = new ListItem();
ddlItem.Text = countryItem.Value;
ddlItem.Value = countryItem.Key;
ddlNationalityCountry.Items.Add(ddlItem);
}
和
ddlNationalityCountry.Items.AddRange(input.availableCountries.Select(
item => new ListItem {
Text = item.Value,
Value = item.Key
}).ToArray());
我应该用哪一个?
linq运算符有少量开销。通常,这种开销是而不是驱动应用程序的性能。此外,开销为您购买了在其他地方更容易创造效率的能力。
其中一些效率是程序员的:更干净的代码,更少的错误,更容易维护。效率的一部分在于更容易构建更快的算法。
我的意思是,您的第一个示例是将项目添加到集合中。您的第二个样本正在生成一个数组。你为什么要创建那个数组?我知道函数调用需要它,但在大多数其他情况下,你不会。Linq允许您从收集的管道的角度进行思考,在管道中,最终结果直到最后一步才完全实现,并且一路上的每一步都只作用于那些相关的元素,因此通常比Linq开销节省更多的计算机时间或ram。
如果你只使用linq来写与foreach相同的事情,linq将是一个(小的!)净性能损失(但可能仍然是一个净生产力的胜利)。如果你学会接受林克所能做的,林克可以在比赛中大获全胜。