Ordinare dinamicamente una query con EntitySQL in Entity Framework

Stefano Mostarda

di Stefano Mostarda, in LINQ, Entity Framework, il 25 febbraio 2009 alle 08:00

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 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.

IL CONTENUTO
IN PRIMO PIANO
MEDIA
IN EVIDENZA
MISC