我有一个像这样的一维集合:
[1,2,4,5.....n]
我想将该集合转换为二维集合,如下所示:
[[1,2,3],
[4,5,6],
...]
基本上我想分组或拆分,如果你想,数组在组'n'成员
我可以用foreach
语句来完成,但我目前正在学习LINQ,因此我不想手动迭代所有元素并创建新数组,而是想使用LINQ特性(如果适用)
有什么LINQ函数可以帮助我完成这个吗?
我在想在GroupBy
或SelectMany
我不知道他们是否会帮助我虽然但他们可能会
任何帮助将真正感谢它=):**
8条答案
按热度按时间rqcrx0a61#
您可以按索引除以批处理大小进行分组,如下所示:
ztigrdn82#
使用MoreLinq .批处理
示例
bzzcjhmw3#
您需要
Take()
和Skip()
。这些方法将允许您拆分一个IEnumerable
。然后您可以使用Concat()
将它们重新组合在一起。ifmq2ha24#
下面的示例将数组拆分为每组4个项目的组。
sbtkgmzw5#
它不是一个纯LINQ,但它的目的是与它一起使用:
它可以在您的代码中用作:
juzqafwq6#
这很简单:
bz4sfanl7#
我基于Jeremy Holovacs's答案的解决方案,并使用Take()和Skip()创建子数组。
unhi4e5o8#
从.NET 6开始,有
System.Linq.Enumerable.Chunk(this IEnumerable<TSource>, int size)
extension method,它返回一个IEnumerable<TSource[]>
,其中每一项都是size
元素的数组,除了最后一项,它可能包含更少的元素。代码如下:
产出