如何使用for循环而不是foreach循环?

时间:2011-12-25 18:26:27

标签: c# optimization loops for-loop foreach

如何用for循环实现这个foreach循环?因为我听说for循环比foreach循环要快得多。

   foreach (RV item in gridview.SelectedItems.ToList())
   {
        R req= db.Requests.Single(x => x.Id == item.Id);
        ...
   }

3 个答案:

答案 0 :(得分:11)

您听错了。
for循环并不比foreach循环快得多 事实上,对于某些集合,foreach循环比for循环快得多。

ToList()比其中任何一个慢。

如果你真的想让你的代码更快,你应该使用O(n)LINQ连接而不是O(n 2 Single()调用。

答案 1 :(得分:0)

for (int i = 0; i < gridview.SelectedItems.Count(); i++)
{
    R req = db.Requests.Single(x => x.ID == (gridview.SelectedItems(i) as RV).Id);
    ...
}

虽然我怀疑会有明显的性能提升。

答案 2 :(得分:0)

如果您正在使用foreach枚举它们,那么将所选项目转换为列表是没有意义的。另外一个for循环要求你调用ToList,它在内部使用foreach!

我不知道,如果您的o / r-mapper可以应对Contains。如果确实尝试了这个:

var items = db.Requests.Where(x => gridview.SelectedItems.Contains(x.Id));

这将减少数据库请求的数量。这是时间流逝的地方,而不是在foreach中!