将对象分组为固定大小的集合

时间:2015-06-05 18:02:43

标签: c# linq

我正在尝试将一个条目集合放在一个zip文件中,并将相关的条目组合在一起。我知道一组中应该有4个条目。我尝试了以下方法:

var entryGroups = zipArchive.Entries
            .OrderBy(entry => entry.FullName)
            .Select((entry, index) => new {index, entry})
            .GroupBy(entry => entry.index % groupSize)
            .Select(group => group.Select(grouping => grouping.entry));

不幸的是,这给了我4个大组,而我正在寻找许多每组有4个条目的组。

2 个答案:

答案 0 :(得分:1)

可能值得使用/而不是%

进行尝试
var entryGroups = zipArchive.Entries
        .OrderBy(entry => entry.FullName)
        .Select((entry, index) => new {index, entry})
        .GroupBy(entry => entry.index / groupSize)
        .Select(group => group.Select(grouping => grouping.entry));

答案 1 :(得分:1)

将余数运算符%替换为整数除/

使用提醒操作符仅创建n组,而不是大小为n的组。使用整数除法(/)划分为n个组。请注意,最后一组可能是一些短元素(它将是余数)。