如何使用LINQ将简单数组转换为连续元素对的数组?

时间:2014-07-02 13:29:24

标签: c# arrays linq

使用LINQ [[a,b]将 [a,b,c,d] 转换为连续元素对数组的最简单方法是什么? ,[c,d]] ?它有可能吗?

  

x = [a,b,c,d]→y = [[a,b],[c,d]]

P.S。如果不是LINQ,那么如何以最简单有效的方式完成?

1 个答案:

答案 0 :(得分:4)

是的,有可能,:

var result = yourCollection
             .Select((x,idx) => new { x, idx })
             .GroupBy(g => g.idx / 2)
             .Select(g => g.Select(p => p.x).ToArray())
             .ToArray();

由于没有直接执行此操作的内置方法,因此代码看起来很混乱。如果您可以使用MoreLINQ库中的Batch方法,那会更好。然后您可以使用:

var result = yourCollection.Batch(2).Select(x => x.ToArray()).ToArray();