Creare un extension method ForEach per l'interfaccia IEnumerable

di Stefano Mostarda, in LINQ, .NET Framework,

La classe List<T> mette a disposizione il metodo ForEach che permette di eseguire una determinata azione su ogni elemento della lista. Questo metodo è molto comodo, ma poiché fa parte della classe List<T>, non è utilizzabile per le liste restituite da query LINQ a meno che non si invochi il meteodo ToList alla fine della query.
In questo script, creiamo un extension method ForEach che si applica alla classe IEnumerable<T> e che quindi può essere utilizzato anche senza invocare il metodo ToList.

public static IEnumerable<T> ForEach<T>(this IEnumerable<T> input, Action<T> action)
{
  foreach (T item in input)
  {
    action(item);
  }
  return input;
}

Una volta creato l'extension method, possiamo utilizzarlo nel seguente modo.

var data = myList.Where(c => c.IsAvailable)
  .ForEach(c => Console.Write(c));

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