Spesso abbiamo l'esigenza di eseguire query adottando sempre gli stessi filtri. Per esempio, quando dobbiamo recuperari i clienti, dobbiamo recuperare solo quelli attivi. Se nel codice eseguiamo molte query sui clienti, dobbiamo ripetere lo stesso filtro in ogni query e quest'operazione è soggetta a errori e soprattutto il codice diventa complicato da mantenere.
Per ottimizzare il codice, possiamo creare un metodo che accetta in input un oggetto IQueryable<T> e sul quale applica i filtri restituendo infine l'oggetto filtrato. In questo modo, invece che applicare i filtri ad ogni query, possiamo semplicemente invocare il metodo per poi concatenare gli altri operatori LINQ.
private IQueryable<Customer> GetCustomers(this IQueryable<Customer> input){
return input.Where(c => c.IsActive);
}
...
var c = ctx.Customers.GetCustomers().OrderBy(c => c.Name);Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Montare Azure Blob Storage su Linux con BlobFuse2
Simulare Azure Cosmos DB in locale con Docker
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Eseguire query in contemporanea con EF
Utilizzare Hybrid Cache in .NET 9
Selettore CSS :has() e i suoi casi d'uso avanzati
Scrivere selettori CSS più semplici ed efficienti con :is()
Evidenziare una porzione di testo in un pagina dopo una navigazione


