【问题标题】:Group objects into fixed-sized collections将对象分组到固定大小的集合中
【发布时间】:2015-06-05 18:02:42
【问题描述】:

我正在尝试在一个 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 个条目。

【问题讨论】:

    标签: c# linq


    【解决方案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));
    

    【讨论】:

    • 叹息...这就是咖啡机坏了的情况!
    【解决方案2】:

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

    使用提醒运算符只创建n 组,而不是n 大小的组。使用整数除法 (/) 划分为 n 组。请注意,最后一组可能缺少一些元素(它将是剩余部分)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-05
      • 2021-06-22
      • 2021-11-19
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多