Ich habe das:
%Vor%und das:
%Vor%Obwohl ich die Verwendung von beiden verstehe (und man später einen Fehler erzeugt), verstehe ich nicht, wie sie unterschiedlich sind.
Ich habe solche Fragen woanders auf STO gesehen, aber ich habe keine Ahnung, was die Antwort auf diese Frage ist, fürchte ich.
Ein Typ, der IOrderedQueryable<T>
implementiert, enthält einen zusätzlichen Status zum Speichern von Informationen zum Sortieren.
IQueryable<T>
stellt normalerweise eine Operation dar, die später ausgeführt wird (und möglicherweise in einer völlig andere Sprache auf einem anderen Computer, zB mit LINQ to SQL). Eine separate Schnittstelle wird benötigt, da die nächste Operation möglicherweise eine andere Sortierung ist, die anders behandelt werden muss (um nach Spalte A zu sortieren, und B zwei LINQ-Operatoren benötigt, um zu definieren), aber das System muss sicherstellen, dass jeder Schlüssel dazu beiträgt die Gesamtsortierung).
Es ist leicht zu sehen, ob Sie das Query-Verständnis in die entsprechenden Linq-Erweiterungsmethoden übersetzen. Der Rückgabetyp von OrderBy () ist IOrderedEnumerable & lt; & gt ;. Where () gibt IEnumerable & lt; & gt; zurück. Was Ihr erster Ausdruck tut, ist zuerst alle der Punkte zu sortieren und dann nur diejenigen auszuwählen, die der where-Klausel entsprechen. Die zuletzt angewendete Operation ist Where, daher ist der Ausdruckstyp IEnumerable & lt; & gt;.
Welche davon effizienter ist, hängt weitgehend vom Linq-Anbieter ab, den Sie verwenden. Mein Geld ist zuletzt sortiert. Obwohl ich denke, dass der Anbieter schlau genug ist, die Operationen in der besten Reihenfolge zu bestellen. Vielleicht möchten Sie das überprüfen.
Tags und Links .net iqueryable