如何按索引对项目进行分组?C#LINQ

Jad*_*ias 18 .net c# linq ienumerable grouping

假设我有

var input = new int[] { 0, 1, 2, 3, 4, 5 };
Run Code Online (Sandbox Code Playgroud)

如何将它们分组成对?

var output = new int[][] { new int[] { 0, 1 }, new int[] { 2, 3 }, new int[] { 4, 5 } };
Run Code Online (Sandbox Code Playgroud)

最好使用LINQ

Ben*_*n M 34

input
   .Select((value, index) => new { PairNum = index / 2, value })
   .GroupBy(pair => pair.PairNum)
   .Select(grp => grp.Select(g => g.value).ToArray())
   .ToArray()
Run Code Online (Sandbox Code Playgroud)


Mik*_*Two 5

可能不适合您,但您可以使用 C# 4.0 中新的 Zip 方法


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();


ada*_*raz 5

var input = new int[] { 0, 1, 2, 3, 4, 5 };
int i = 0;
var output = input.GroupBy(item => i++ / 2);
Run Code Online (Sandbox Code Playgroud)