C# 如何使用for循环而不是foreach循环?
如何用for循环实现这个foreach循环?因为我听说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(
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导致的性能损失。