Utilizzare l'interfaccia IQueryable per creare filtri riutilizzabili

di Stefano Mostarda, in LINQ, Entity Framework,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi