使用LINQ拆分数组

Ros*_*rta 8 .net c# linq arrays linq-to-objects

我有一个像这样的单维集合:

[1,2,4,5.....n]
Run Code Online (Sandbox Code Playgroud)

我想在这样的二维集合中转换该集合:

[[1,2,3],
[4,5,6],
...]
Run Code Online (Sandbox Code Playgroud)

基本上我想分组或拆分,如果你想要的话,数组是'n'成员

我可以用一个foreach语句来做,但我目前正在学习LINQ,所以不是迭代遍历所有元素并手动创建一个新数组我想使用LINQ功能(如果适用)

有没有LINQ函数来帮助我完成这个?

我在思考,GroupBy或者SelectMany我不知道他们是否会帮助我,但他们可能会

任何帮助将真正欣赏它=):**

das*_*ght 14

您可以按索引分组除以批量大小,如下所示:

var batchSize = 3;
var batched = orig
    .Select((Value, Index) => new {Value, Index})
    .GroupBy(p => p.Index/batchSize)
    .Select(g => g.Select(p => p.Value).ToList());
Run Code Online (Sandbox Code Playgroud)


Til*_*lak 5

使用MoreLinq .Batch

 var result = inputArray.Batch(n); // n -> batch size
Run Code Online (Sandbox Code Playgroud)

    var inputs = Enumerable.Range(1,10);

    var output = inputs.Batch(3);


    var outputAsArray = inputs.Batch(3).Select(x=>x.ToArray()).ToArray(); //If require as array
Run Code Online (Sandbox Code Playgroud)