Frage

ich mehr und mehr Bewegung mit Lambda aber ich, warum irgendwann Beispiel Verwendung .AsQueryable(); nicht herausfinden, die die IQueryable verwenden und es irgendwann die .AsQueryable(); wegzulassen und die IEnumerable verwenden.

Ich habe den MSDN lesen, aber ich nicht sehen, wie „Ausführen eines Ausdrucksbaum“ ist ein Vorteil gegenüber nicht.

Jeder kann es mir erklären?

War es hilfreich?

Lösung

IQueryable implementiert IEnumerable, so rechts von der Fledermaus, mit IQueryable, können Sie alles tun, was Sie mit IEnumerable tun können. IQueryables beschäftigt einigen Lambda-Ausdruck in Abfrage auf der zugrunde liegende Datenquelle mit der Umwandlung - das ist eine SQL-Datenbank sein könnte, oder ein Objekt gesetzt.

Grundsätzlich sollten Sie in der Regel nicht haben eine oder andere Weise zu kümmern, wenn es sich um eine IQueryable ist, oder ein IEnumerable.

Andere Tipps

Als Benutzer sollten Sie in der Regel nicht kümmern müssen, es ist wirklich über die Implementierer von der Datenquelle. Wenn die Daten-Provider nur IEnumerable implementiert, tun Sie im Grunde LINQ zu Objekten Ausführung, das heißt es ist im Speicherbetrieb auf Sammlungen. IQueryable bietet die Möglichkeit, die Datenquelle des Ausdrucksbaums in eine alternative Darstellung für die Ausführung zu übersetzen, wenn der Ausdruck ausgeführt wird (in der Regel durch Aufzählung), das ist, was Linq2Sql, Linq2Xml und Linq2Entities tun.

Das einzige Mal, dass ich den Endbenutzer fürsorglich sehen können, wenn sie den Ausdruck Baum untersuchen wollen, die ausgeführt werden würde, da IQueryable Expression aussetzt. Eine weitere Anwendung könnte die Provider inspizieren. Aber diese beiden Szenarien sollte wirklich für Implementierer von anderen Abfrageanbieter reserviert werden und wollen, um den Ausdruck zu verwandeln. Der Punkt von Linq ist, dass Sie nicht über die Umsetzung der Ausdruck Ausführung kümmern müssen verwendet werden.

Ich bin mit Arne Claassen gibt es Fälle, wenn Sie über den zugrunde liegenden implmentatoin durch die Datenquellen zu denken. Zum Beispiel dieses Blog rel="nofollow Post die zeigt, wie die SQL erzeugt von IEnumerable und IQueryable unterschiedlich sind in bestimmten Szenarien.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top