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 回答