C#, LINQ, Dynamic Query: codice per filtrare una query dinamica al di fuori del repository
-
21-09-2019 - |
Domanda
Se fai qualcosa del genere nel tuo repository:
IQueryable<CarClass> GetCars(string condition, params object[] values) {
return db.Cars.Where(condition, values);
}
E si imposta la condizione e i valori al di fuori del repository:
string condition = "CarMake == @Make";
object[] values = new string[] { Make = "Ford" };
var result = myRepo.GetCars( condition, values);
Come saresti in grado di ordinare il risultato al di fuori del repository con query dinamica?
return View( "myView", result.OrderBy("Price"));
In qualche modo sto perdendo la natura DynamicQuery quando i dati escono dal repository. E sì, non ho capito come restituire il tipo di carclass in cui normalmente faresti una nuova carclass selezionata {fieldname = m.fieldName, ...}
Soluzione
La query dinamica richiede:
- la fonte è
IQueryable<T>
(Quindi se lo èIEnumerable<T>
o simile, basta chiamare.AsQueryable()
su di esso) - una DLL extra da fare riferimento nel codice che desidera eseguire una query dinamica
- l'appropriato
using
Direttive per essere in atto nella parte superiore del file di origine locale
Controlla quei tre e dovresti essere in grado di aggiungere .Where(condition)
, .OrderBy(name)
, eccetera
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow