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

C# 如何使用for循环而不是foreach循环?,c#,optimization,loops,for-loop,foreach,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); ... } 你听错了。 for循环并不比foreach循环快多少。 事实上,对于某些集合,foreach循环比for循环快得多 ToList(

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

   foreach (RV item in gridview.SelectedItems.ToList())
   {
        R req= db.Requests.Single(x => x.Id == item.Id);
        ...
   }
你听错了。
for
循环并不比
foreach
循环快多少。
事实上,对于某些集合,
foreach
循环比
for
循环快得多

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

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

for(int i=0;ifor (int i = 0; i < gridview.SelectedItems.Count(); i++)
{
    R req = db.Requests.Single(x => x.ID == (gridview.SelectedItems(i) as RV).Id);
    ...
}
{ R req=db.Requests.Single(x=>x.ID==(gridview.SelectedItems(i)作为RV.ID); ... }
尽管我怀疑是否会有任何明显的性能提升。

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

我不知道,您的o/r映射器是否能够处理
包含的
。如果它确实尝试了这一点:

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

这将减少数据库请求的数量。这是浪费时间的地方,而不是浪费时间的地方

对于
循环来说,这是一个微不足道的
;我看不出你的问题。
foreach loop
什么时候比
for loop
快?@gdoron:当使用链表作为
IList
时。你能解释一下原因,或者提供一个链接吗?@gdoron:O(n)链表的索引器,因为它每次都需要从头开始。会有一个(不可测量的)
Count()
s导致的性能损失。