forループでこのforeachループを実装するにはどうすればよいですか?なぜなら、forループはforeachループよりはるかに高速だと聞いたからです。foreachループの代わりにforループを使用する方法は?
foreach (RV item in gridview.SelectedItems.ToList())
{
R req= db.Requests.Single(x => x.Id == item.Id);
...
}
forループでこのforeachループを実装するにはどうすればよいですか?なぜなら、forループはforeachループよりはるかに高速だと聞いたからです。foreachループの代わりにforループを使用する方法は?
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(n )Single()
呼び出しの代わりに使用する必要があります。
foreachを使用して列挙している場合は、選択した項目をリストに変換することはありません。また、forループでは、内部的にforeachを使用するToListを呼び出す必要があります。
o/r-mapperがContains
に対応できるかどうかわかりません。試してみると:
var items = db.Requests.Where(x => gridview.SelectedItems.Contains(x.Id));
これにより、データベース要求の数が減ります。これは、foreachではなく、時間が失われる場所です!
これは簡単な 'for'ループです。あなたの質問は表示されません。 – SLaks