Chame o método x vezes usando linq


8

Eu gostaria de chamar um método três vezes. Usando LINQ , o método retorna um objeto. Com esse objeto, quero adicioná-lo a uma lista. Como faço para fazer isso?

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

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

private static News CollectNews(){
...
}


7
Alguma razão específica para você usar o Linq?
CurtisHx 27/11/19

1
Talvez você esteja confundindo Linq com a expressão Lambda?
Roy Doron

Respostas:


4

Pelo que entendi, você deseja terminar com uma lista de três Newsobjetos. Você pode fazer algo como

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

Você pode usar qualquer valor no lugar 1desse exemplo.

Enquanto essa abordagem funciona, é meio que abusar da idéia do LINQ. Em particular, você não deve assumir nenhuma ordem de execução de CollectNews()chamadas. Embora a Selectimplementação padrão seja executada em sequência, isso nem sempre pode ser verdade.



5

Você pode System.Linq.Enumerablerepetir uma ação várias vezes.

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

Isso executaria o Addmétodo na lista 3 vezes. Documentos Enumerable.Repeat aqui.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.