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

Pablitros
fonte
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.

Grzegorz Sławecki
fonte
6
var lstNews = Enumerable.Repeat(0, 3).Select(_ => CollectNews()).ToList();
Chris Yungmann
fonte
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.

Nick Proud
fonte