我认为结果应该包含[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));
由于
答案 0 :(得分:3)
对于序列中的每个项目,您将重复连接到累积序列的开头。交换订单,以便连接到最后。
(acc, s) => acc.Concat(Enumerable.Repeat(s, 2))
另一方面,这样做更容易(也更有效率)来获得该序列。
var result =
from s in sequence
from x in Enumerable.Repeat(s, 2)
select x;
答案 1 :(得分:1)
使用SelectMany
实现更简单的方法:
var sequence = new int[] { 1, 2, 3 };
var result = sequence.SelectMany(i => new[] {i, i}).ToArray();