如何用for循环实现这个foreach循环?因为我听说for循环比foreach循环要快得多。
foreach (RV item in gridview.SelectedItems.ToList())
{
R req= db.Requests.Single(x => x.Id == item.Id);
...
}
答案 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中!