IEnumerabledynamic mit linq

9

Ich versuche, dynamischen Datenkontext zu erstellen, linq unterstützt keinen dynamischen Typ Ich habe diese Lösung auf

gefunden

Ссылка

%Vor%

Das Problem mit dieser Lösung besteht darin, alle Daten aus der Datenbank abzurufen, nachdem die where-Anweisung angewendet wurde. Gibt es eine Möglichkeit, eine where-Anweisung anzuwenden, bevor die Daten aus der Datenbank mit dem dynamischen Typ

abgerufen werden     
Bakri 15.06.2015, 05:13
quelle

2 Antworten

0

Nach langer Suche die Lösung, die für mich arbeitet

%Vor%

Das Problem wissen, übergeben Expression<Func<dynamic, dynamic>>
um dieses Problem zu lösen

%Vor%

Wir können die Abfrage jetzt wie folgt aufrufen.

%Vor%     
Bakri 07.07.2015, 08:25
quelle
2
  

Das Problem mit dieser Lösung besteht darin, alle Daten aus der Datenbank abzurufen, nachdem die where-Anweisung angewendet wurde.

Das Problem hier ist nicht mit der Dynamik, sondern mit der Art, wie Sie über die Quelle iterieren. Sie verwenden foreach und erwarten, dass es in eine SQL oder eine Art von übersetzt wird, aber das ist nur eine falsche Annahme. Sobald der Iterator vom GetEnumerator() -Methodenaufruf erstellt wurde, wird die Abfrage "materialisiert", auch wenn der reale Typ von source IQueryable<T> implementiert, wird alles andere im Speicher ausgeführt.

Wenn Sie möchten, dass die Bedingungen in SQL übersetzt werden, brauchen Sie um IQueryableProvider zu implementieren .

Oder zumindest können Sie versuchen, den zugrunde liegenden IQueryableProvider aufzurufen. Aber ich bin mir nicht sicher, ob es funktionieren würde.

%Vor%

Bitte beachten Sie, dass sich der Typ des Parameters source von object zu IQueryable geändert hat und die Typen der Parameter map und predicate in Expression<Func<,>> geändert wurden.

    
hazzik 16.06.2015 22:10
quelle

Tags und Links