C#, linq, dynamische Abfrage: Code zum Filtern einer dynamischen Abfrage außerhalb des Repositorys
-
21-09-2019 - |
Frage
Wenn Sie so etwas in Ihrem Repository tun:
IQueryable<CarClass> GetCars(string condition, params object[] values) {
return db.Cars.Where(condition, values);
}
Und Sie setzen den Zustand und die Werte außerhalb des Repositorys:
string condition = "CarMake == @Make";
object[] values = new string[] { Make = "Ford" };
var result = myRepo.GetCars( condition, values);
Wie könnten Sie das Ergebnis außerhalb des Repositorys mit dynamischer Abfrage sortieren?
return View( "myView", result.OrderBy("Price"));
Irgendwie verliere ich die DynamicQuery -Natur, wenn die Daten aus dem Repository ausgehen. Und ja, ich habe nicht herausgefunden, wie ich den KARCASS -Typ zurückgeben soll, bei dem Sie normalerweise eine ausgewählte neue Carclass {fieldname = m.fieldname, ...} durchführen würden
Lösung
Dynamische Abfrage erfordert:
- die Quelle sein
IQueryable<T>
(Also, wenn es so istIEnumerable<T>
oder ähnlich, rufen Sie einfach an.AsQueryable()
darauf) - Eine zusätzliche DLL, auf die in dem Code verwiesen wird, auf die dynamische Abfrage ausführen möchte
- der angemessene
using
Richtlinien, die oben in der lokalen Quelldatei vorhanden sind
Überprüfen Sie diese drei, und Sie sollten in der Lage sein, hinzuzufügen .Where(condition)
, .OrderBy(name)
, etc
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow