0

結果には [1,1,2,2,3,3] が含まれているはずですが、[3,3,2,2,1,1] が含まれています。リストが逆になっているのはなぜですか?

var sequence = new int[] { 1, 2, 3 };
var result = sequence.Aggregate(
            Enumerable.Empty<int>(),
            (acc, s) => Enumerable.Repeat(s, 2).Concat(acc));

ありがとう

4

2 に答える 2

3

シーケンス内のすべてのアイテムについて、繰り返しを累積シーケンスの先頭に連結しています。順序を入れ替えて、最後まで連結します。

(acc, s) => acc.Concat(Enumerable.Repeat(s, 2))

余談ですが、代わりにこれを実行してそのシーケンスを取得する方が簡単 (かつ効率的) です。

var result =
    from s in sequence
    from x in Enumerable.Repeat(s, 2)
    select x;
于 2012-11-04T06:43:10.660 に答える
1

を使用して達成するためのより簡単な方法SelectMany

 var sequence = new int[] { 1, 2, 3 };
 var result = sequence.SelectMany(i => new[] {i, i}).ToArray();
于 2012-11-04T06:53:42.050 に答える