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


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.



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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.