Предположим, у меня есть
var input = new int[] { 0, 1, 2, 3, 4, 5 };
Как сгруппировать их в пары?
var output = new int[][] { new int[] { 0, 1 }, new int[] { 2, 3 }, new int[] { 4, 5 } };
Предпочтительно использовать LINQ
Предположим, у меня есть
var input = new int[] { 0, 1, 2, 3, 4, 5 };
Как сгруппировать их в пары?
var output = new int[][] { new int[] { 0, 1 }, new int[] { 2, 3 }, new int[] { 4, 5 } };
Предпочтительно использовать LINQ
Вероятно, это не применимо к вам, но вы можете использовать новый метод Zip в C# 4.0.
var input = new int[] { 0, 1, 2, 3, 4, 5 };
IEnumerable evens = input.Where((element, index) => index % 2 == 0);
IEnumerable odds = input.Where((element, index) => index % 2 == 1);
var results = evens.Zip(odds, (e, o) => new[] { e, o }).ToArray();
Используя метод ToLookup:
input
.Select((number, index) => new { index , number})
.ToLookup(_ => _.index / 2, _ => _.number)
.Select(_ => _.ToArray())
.ToArray();
Используя метод Zip:
input
.Zip(input.Skip(1), (_, __) => new[] {_, __})
.Where((_, index) => index % 2 == 0)
.ToArray();