Molto spesso ci troviamo nella situazione di dover recuperare i dati di una collection navigation property ma di dover filtrare questi dati. Un tipico esempio di questa situazione è quando vogliamo recuperare una lista di clienti e i loro ultimi 5 ordini. Fino alla versione 3, Entity Framework Core permette di recuperare gli ordini legati ai clienti ma non offre la possibilità di filtrarli in alcun modo. Questo significa che se un cliente ha 500 ordini questi vengono recuperati tutti causando un enorme spreco di risorse.
Entity Framework Core 5 aggiunge la possibilità di utilizzare i metodi LINQ Where, OrderBy, OrderByDescending, ThenBy, ThenDescending, Take e Skip all'interno della lambda del metodo Include così da poter filtrare i record collegati che vengono recuperati.
using (var context = new MyContext())
{
var customers = context.Customers
.Include(c =>
c.Orders
.Where(o => o.OrderDate <= DateTime.Now.AddMonth(-3))
.OrderByDescending(o => o.Date)
.Take(5)
)
.ToList();
}In questa query vengono recuperati tutti i clienti e i relativi ultimi 5 ordini (per data ordine) fatti negli ultimi 3 mesi ordinati. Prima di questa nuova funzionalità, potevamo comuqnue filtrare i dati, ma avremmo dovuto ricorrere a subquery e tipi anonimi complicando notevolmente il codice. Grazie a questa aggiunta, non dobbiamo più ricorrere a simili tecniche con grande risparmio di tempo di sviluppo e anche maggior efficiena a run time.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Supportare la crittografia di ASP.NET Core con Azure Container App
Filtrare i dati in ASP.NET Core usando OpenTelemetry su Azure Monitor
Usare il metodo nameof con un tipo generico in C# 14
Interagire con Azure DevOps tramite MCP Server
Utilizzare il Null conditional assignment di C# 14
Impostare automaticamente l'altezza del font tramite CSS
Eseguire i pre-commit hook di git con dependabot
Rendere affidabile lo scale out su Azure App Service
Configuratione e utilizzo .NET Aspire CLI
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Centralizzare gli endpoint AI Foundry con Azure API Management
Personalizzare le pagine di errore su Azure App Service




