Nehmen wir an, ich brauche eine Erweiterungsmethode, die nur die benötigten Eigenschaften aus verschiedenen Quellen auswählt. Die Quelle könnte die Datenbank oder die Sammlung im Speicher sein. So habe ich eine solche Verlängerung definierte Methode:In welchen Fällen muss ich zwei verschiedene Erweiterungsmethoden für IEnumerable und IQueryable erstellen?
public IQueryable<TResult> SelectDynamic<TResult>(
this IQueryable<T> source,
...)
Dies funktioniert gut für IQueryable
s. Aber ich muss diese Funktion auch für IEnumerable
s aufrufen.
Und in diesem Fall kann ich es nennen, mit Hilfe von .AsQueryable()
:
myEnumerable.AsQueryable()
.SelectDynamic(...)
.ToList();
Beide arbeiten gut. Und ich habe solche Frage, wenn beide gut funktionieren, in welchen Bedingungen Ich muss zwei verschiedene Erweiterungsmethoden für den gleichen Zweck erstellen, whike arbeitet man mit IEnumerable
und die andere mit IQueryable
?
Meine Methode muss im Fall von Queryable
Abfrage an die Datenbank senden.
Zum Beispiel, hier ist die Quelle der .Select
Erweiterungsmethode innerhalb System.Linq
Namespace:
ich meine Hauptfrage wieder bin zu wiederholen:
Meine Methode muss eine Abfrage an den Da senden Tabase im Fall von Queryable
, aber nicht bei der Arbeit mit IEnumerable
. Und jetzt verwende ich AsQueryable()
für die Aufzählungen. Weil ich nicht denselben Code für die Enumerable
schreiben möchte. Kann es einige Nebenwirkungen haben?
Eigentlich denke ich, das ist eine gute Frage, denn niemand scheint zu wissen, was AsQueryable wirklich macht. – usr