Rufen Sie die Methode x mal mit linq auf

8

Ich möchte eine Methode dreimal aufrufen. Mit LINQ gibt die Methode ein Objekt zurück. Mit diesem Objekt möchte ich es einer Liste hinzufügen. Wie mache ich das?

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

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

private static News CollectNews(){
...
}

Pablitros
quelle
7
Gibt es einen bestimmten Grund, warum Sie Linq verwenden müssen?
CurtisHx
1
Vielleicht verwechseln Sie Linq mit dem Lambda-Ausdruck?
Roy Doron

Antworten:

4

Soweit ich weiß, möchten Sie am Ende eine Liste mit drei NewsObjekten erstellen. Sie können so etwas tun

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

Sie können anstelle von 1in diesem Beispiel einen beliebigen Wert verwenden .

Während dieser Ansatz funktioniert, missbraucht er die Idee von LINQ. Insbesondere sollten Sie keine Reihenfolge für die Ausführung von CollectNews()Anrufen übernehmen. Während die Standardimplementierung Selectnacheinander ausgeführt wird, ist dies möglicherweise nicht immer der Fall.

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

Sie können System.Linq.Enumerableeine Aktion mehrmals wiederholen.

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

Dies würde die AddMethode in der Liste dreimal ausführen . Docs Enumerable.Repeat hier.

Nick stolz
quelle