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

本文关键字:集合 对象 | 更新日期: 2023-09-27 17:53:36

我试图在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个条目。

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

可能值得尝试/而不是%

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));

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

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