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(){
...
}


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.



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í.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.