将[a,b,c,d]转换为其元素连续对的阵列的最简单方法是使用LINQ
[[a,b],[c,d]]?它有可能吗?如何使用LINQ将简单数组转换为其元素的连续对的数组?
X = [A,B,C,d]→Y = [[A,B],[C,D]]
谢谢!
P.S.如果不是LINQ,那么如何以最简单高效的方式完成?
将[a,b,c,d]转换为其元素连续对的阵列的最简单方法是使用LINQ
[[a,b],[c,d]]?它有可能吗?如何使用LINQ将简单数组转换为其元素的连续对的数组?
X = [A,B,C,d]→Y = [[A,B],[C,D]]
谢谢!
P.S.如果不是LINQ,那么如何以最简单高效的方式完成?
是的,它是可能的,:
var result = yourCollection
.Select((x,idx) => new { x, idx })
.GroupBy(g => g.idx/2)
.Select(g => g.Select(p => p.x).ToArray())
.ToArray();
由于没有内置的方法来直接做到这一点,代码看起来像messy.It会更好,如果你可以用Batch
方法从MoreLINQ
库。那么你可以使用:
var result = yourCollection.Batch(2).Select(x => x.ToArray()).ToArray();
+1伟大的解决方案 – Christos
这真棒和工作解决方案!我很欣赏你度过的时间和你的知识,男人!非常感谢! –
所以你想从原始数组中配对偶数和奇数元素? – wbennett
如果元素数量很奇怪,会发生什么? –
[MoreLinq](https://code.google.com/p/morelinq/source/browse/MoreLinq/Batch.cs)具有可以执行此操作的“Batch”方法。 –