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