【发布时间】:2014-08-07 03:25:42
【问题描述】:
我再次问这个问题,自从我上次问它以来,它被错误地标记为重复。这次我将包含更多信息,这可能会让我更容易理解我的需求(这很可能是我自己没有正确定义问题的错)。
我正在尝试将一个泛型类型的列表拆分为 4 个列表。为简单起见,我将在此示例中使用整数列表,但这不应该有所作为。
我做了很多搜索,找到了多个答案,如"Split List into Sublists with LINQ"、using batch methods to split,我尝试过 MoreLinq 的 Batch 方法等等。这些建议可以很好地发挥它们的作用,但它们并没有按照我需要的方式发挥作用。
如果我有一个包含以下元素的列表(1-25 的整数):
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
然后我需要做的是创建 4 个列表,其中包含可变数量的元素,其中元素在同一个列表中递增,而不是使用下一个元素跳转到下一个列表。
[ 1, 2, 3, 4, 5, 6, 7]
[ 8, 9, 10, 11, 12, 13, 14]
[15, 16, 17, 18, 19, 20, 21]
[20, 21, 22, 23, 24, 25]
在链接的任一问题中使用解决方案时,以 4 个“部分”作为参数,我得到这样的列表(这是元素跳转到下一个列表而不是列表的下一个元素的示例):
[1, 5, 9, 13, 17, 21, 25],
[2, 6, 10, 14, 18, 22, 26],
[3, 7, 11, 15, 19, 23, 27],
[4, 8, 12, 16, 20, 24]
或者这个(和MoreLinq的Batch方法一样)
[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16],
[17, 18, 19, 20],
[21, 22, 23, 24],
[25, 26, 27],
所以第一个解决方案将列表拆分为 4 个列表,但将元素按错误的顺序放置。第二种解决方案以正确的顺序拆分列表,但长度不正确。在最后一个解决方案中,他得到了 X 个列表,每个列表中有 4 个元素,我需要有 4 个列表,每个列表中有 X 个元素。
【问题讨论】:
-
您要拆分
List<T>或任何IEnumerable<T>? -
无所谓。我正在使用一个列表,但我猜想使它对所有 IEnumerable 都通用。但如果它让它变得更复杂,它应该只是用于列表。
-
你在做什么?我不明白。我认为你需要重新考虑你的解释。
-
我不明白您在 7 而不是 6 之后分割第一个列表的标准。
-
基本上问题是“在 x 个较小的列表之间平均拆分项目列表”