2

142000 個のオブジェクトを持つ大きな IEnumerable から名前のリストを取得しようとしています。何らかの理由で..操作がタイムアウトになり、名前のリストが不完全になります。以下のコードで私がしていることを行うためのより良い、より速い方法はありますか?

IEnumerable<MyClass> table = GetAll(); // Get All returns an IEnumerable<MyClass>

IEnumerable<string> allNames = new List<string>();
allNames = table.Where(r => listOfIds.Contains(r.id)).Select(r => r.name);

どんな助けでも感謝します、

テッド

4

1 に答える 1

4

これはより効率的です:

List<String> allNames = (from id in listOfIds
                         join t in table on id equals t.id
                         select t.name).ToList();

LINQ JOIN が WHERE でリンクするよりもはるかに高速なのはなぜですか?

ちなみに、ここでは、142000 個のオブジェクトと 50000 個の ID を使用しJoinて、上記よりも 1262 高速です。Where

79ミリ対99705ミリ

于 2012-05-30T20:30:57.870 に答える