Llame al método x veces usando linq

8

Me gustaría llamar a un método 3 veces Usando LINQ , el método devuelve un objeto, con ese objeto quiero agregarlo a una Lista, ¿cómo lo hago?

List<News> lstNews = new List<News>();

lstNews.Add(CollectNews) [x 3 times] <-- Using Linq 

private static News CollectNews(){
...
}

Pablitros
fuente
77
¿Alguna razón específica por la que tienes que usar Linq?
CurtisHx
1
Tal vez ¿Estás confundiendo a Linq con la expresión de Lambda?
Roy Doron

Respuestas:

4

Según tengo entendido, quieres terminar con una lista de tres Newsobjetos. Puedes hacer algo como

Enumerable.Repeat(1, 3).Select(_ => CollectNews()).ToList();

Podría usar cualquier valor en lugar de 1en ese ejemplo.

Si bien este enfoque funciona, es una especie de abuso de la idea de LINQ. En particular, no debe asumir ningún orden de ejecución de CollectNews()llamadas. Si bien la Selectimplementación estándar se ejecutará en secuencia, esto puede no ser siempre cierto.

Grzegorz Sławecki
fuente
6
var lstNews = Enumerable.Repeat(0, 3).Select(_ => CollectNews()).ToList();
Chris Yungmann
fuente
5

Puedes System.Linq.Enumerablerepetir una acción varias veces.

                Enumerable.Repeat<Action>(() =>
            {
                lstNews.Add(CollectNews);
            }, 3);

Esto ejecutaría el Addmétodo en la lista 3 veces. Docs por Enumerable.Repeat aquí.

Nick orgulloso
fuente