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
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Usare le navigation property in QuickGrid di Blazor
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Change tracking e composition in Entity Framework
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Generare velocemente pagine CRUD in Blazor con QuickGrid
Utilizzare QuickGrid di Blazor con Entity Framework
I più letti di oggi
- Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
- Utilizzare StartsWith ed EndsWith con Span
- Utilizzare l nesting nativo dei CSS
- Microsoft lancia il nuovo tool gratuito 'ASP.NET Web Matrix Project'
- Managed deployment strategy in Azure DevOps
- Forzare l'apertura di un file fuori dal browser
- Configurare e gestire sidecar container in Azure App Service