【发布时间】:2014-09-05 14:37:30
【问题描述】:
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 使用相同的 foreach,但出于某种原因,它们都存在。我想知道主要区别,也许还有一些关于它们的棘手问题。
-
在这种情况下,不会有太大的不同。您可以编写测试代码来查看哪个实际上更快,但我怀疑任何差异都会显着。 Linq 并不神奇,无法避免访问列表中的每个项目,因此两者都将是
O(n)。至于为什么它们都存在,Linq 为您提供了不同且更具表现力的语法。同样,在这种情况下,它并没有太大的区别,但在更复杂的情况下,编写 linq 比编写充满大量条件检查的foreach更简洁。
标签: c# asp.net .net performance linq