Molto spesso capita di dover ordinare una query in base ad un parametro che ci arriva in input. L'esempio più classico di questa condizione è quando in una pagina web si permette di ordinare una griglia cliccando sull'intestazione della colonna.
In questi casi LINQ to Entities risulta poco flessibile per via della sua natura tipizzata. Per nostra fortuna, la classe ObjectQuery<T> ci mette a disposizione alcuni metodi che accettano una stringa EntitySQL. Essendo una stringa, questa si presta meglio ad essere sfruttata dinamicamente.
using (var ctx = new NorthwindContext())
{
var x = ctx.Orders.Where(o => OrderDate.Year == DateTime.Now.Year)
.OrderBy("it.shippingcity");
}Per dinamicizzare la query, basta modificare il valore inserito nel metodo OrderBy con una variabile che ci viene passata in input ed il gioco è fatto.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire query in contemporanea con EF
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Mappare una complex property di una entity su un campo JSON
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Mischiare codice server side e client side in una query LINQ con Entity Framework
Loggare le query più lente con Entity Framework
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste


