LINQ分区列表为8个成员列表[重复]
这个问题在这里已有答案:
使用LINQ将列表拆分为子列表
27个答案
没有找到相关结果
已邀请:
7 个回复
才改隘瘁
肉簧咸缮
要么
乐遣杀屎
:
基本上,我们使用为消耗的值提供索引的
版本,我们将索引除以8以确定每个值所属的组。然后我们通过这个分组键对序列进行分组。最后的
将
降低到
(并且由于
是
,因此不是必需的)。 通过在示例中分解常量
并将其替换为指定参数,可以很容易地将其转换为可重用的方法。 它不一定是最优雅的解决方案,它不再是一个懒惰的流媒体解决方案......但它确实有效。 您还可以使用迭代器块(
)编写自己的扩展方法,这可以提供更好的性能并使用比
更少的内存。这就是MoreLinq对IIRC的
方法。
久坡
我认为它赢得了这个问题的“高尔夫”奖。
非常重要,因为您要确保在尝试对输出执行任何操作之前实际执行了分组。如果你删除
,你会得到一些奇怪的副作用。
凄嘛姥
娠侈脚惮顽
贡炮逗握惫
简洁但速度慢。上述方法将IEnumerable分成所需固定大小的块,其中块的总数不重要。要将IEnumerable拆分为N个相同大小或接近相等大小的块,您可以:
为了加快速度,一种简单的方法可以做到:
这比现在行星上的任何东西都要快:)这里有一个
操作的等效方法