C#, linq, dynamische Abfrage: Code zum Filtern einer dynamischen Abfrage außerhalb des Repositorys

StackOverflow https://stackoverflow.com/questions/2497918

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

War es hilfreich?

Lösung

Dynamische Abfrage erfordert:

  • die Quelle sein IQueryable<T> (Also, wenn es so ist IEnumerable<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
scroll top