Angenommen, ich etwas tun, wieKann LINQ "Abfragen" optimieren?
var Ordered = MyList.OrderBy(x => x.prop1).ThenBy(x => x.prop2);
Ist die gefilterte Liste MyList.OrderBy(x => x.prop1)
zurückzukehren, und dann filtern ist es ferner, dass die Liste von ThenBy(x => x.prop2)
? Mit anderen Worten, ist es äquivalent zu
var OrderedByProp1 = MyList.OrderBy(x => x.prop1);
var Ordered = OrderedByProp1.OrderBy(x => x.prop2);
???
Denn natürlich ist es möglich, dies zu optimieren, indem sie einen Sortieralgorithmus mit einem Komparator ausgeführt wird:
var Ordered = MyList.Sort((x,y) => x.prop1 != y.prop1 ? x.prop1 < y.prop1 : (x.prop2 < y.prop2));
Wenn es irgendeine Art von Optimierung und Zwischenlisten tut nicht in den Prozess zurückgeführt, dann, wie es weiß wie geht das? Wie schreibt man eine Klasse, die Ketten von Methoden auf sich selbst optimiert? Macht keinen Sinn.
Welcher Geschmack von LINQ? LINQ zu Objekten, LINQ zu Entitäten, usw.? –
Und wenn Linq an Entitäten, die Linq Anbieter? Da sind viele. Beachten Sie, dass es in EF7 Änderungen gibt, die es Linq für Entitätsanbieter erleichtern, Abfragen besser zu optimieren. –
Wenn Sie eine Verbindung zu einer Datenbank herstellen, verwenden Sie den SQL Profiler, um die in jedem Fall generierten Datenbankabfragen zu vergleichen und festzustellen, welche Unterschiede bestehen (falls vorhanden). – ChrisF