0

インスピレーションを得るためにそこに行ったので、この質問からコードを借りています。オブジェクトのリストがあり、オブジェクトには整数プロパティがあり、リストを foreach して整数の数をループしたい。

これは foreach 内では非常に基本的なものですが、SelectMany を使用できると思われますが、機能させることはできません。次のコードは機能しますが、linq バージョンが必要です。

//set up some data for our example
var tuple1 = new { Name = "Tuple1", Count = 2 };
var tuple2 = new { Name = "Tuple2", Count = 3 };


//put the tuples into a collection
var tuples = new [] { tuple1, tuple2 };

foreach(var item in tuples)
{
    for(int i = 0; i < item.Count; i++)
        Console.WriteLine(item.Name);
}
4

4 に答える 4

3

使用できますSelectMany。シーケンスを生成するだけです:

tuples.SelectMany(t => Enumerable.Repeat(t.Name, t.Count))
于 2013-05-23T20:08:04.890 に答える
3
var flattened = tuples.SelectMany(t => Enumerable.Repeat(t.Name, t.Count));

foreach(var word in flattened)
{
    Console.WriteLine(word);
}
于 2013-05-23T20:08:36.533 に答える
0

a に相当する linq はありませんforeachforeachを反復IEnumerableして各アイテムに対してアクションを実行するには、actual を使用する必要があります。

于 2013-05-23T20:07:20.510 に答える