linqを使用してメソッドをx回呼び出す


8

1つのメソッドを3回呼び出したいLINQを使用して、メソッドがオブジェクトを返し、そのオブジェクトをリストに追加したいのですが、どうすればよいですか?

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

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

private static News CollectNews(){
...
}


7
Linqを使用しなければならない具体的な理由はありますか?
CurtisHx

1
多分あなたはLinqをラムダ式と混同していますか?
ロイ・ドロン

回答:


4

私が理解しているように、あなたは3つのNewsオブジェクトのリストで終わることを望んでいます。あなたは次のようなことができます

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

1その例の代わりに任意の値を使用できます。

このアプローチは機能しますが、LINQの考え方を悪用するようなものです。特に、CollectNews()呼び出しの実行順序を想定しないでください。標準のSelect実装は順番に実行されますが、常にそうであるとは限りません。



5

System.Linq.Enumerableアクションを複数回繰り返すことができます。

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

これAddにより、リストのメソッドが3回実行されます。ここにドキュメントがありEnumerable.Repeat ます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.