2 Stimmen

Durchsuchen einer großen Liste von Objekten

Ich versuche, eine Liste von Namen aus einer großen IEnumerable mit 142000 Objekten abzurufen. Aus Aus irgendeinem Grund wird der Vorgang zeitlich begrenzt und hinterlässt eine unvollständige Liste von Namen. Ist gibt es einen besseren und schnelleren Weg, um das zu tun, was ich im folgenden Code tue:

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);

Jede Hilfe ist willkommen,

Ted

4voto

Tim Schmelter Punkte 427304

Dies dürfte effizienter sein:

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

Warum ist LINQ JOIN so viel schneller als die Verknüpfung mit WHERE?

Im Übrigen, Join ist hier 1262 schneller als Ihr Where oben mit 142000 Objekten und 50000 ID's.

79 millis vs. 99705 millis

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X