【问题标题】:Does .GroupBy() guarantee order in its groupings?.GroupBy() 是否保证其分组的顺序?
【发布时间】:2012-09-04 20:47:32
【问题描述】:

假设我有一个(有序的)动物序列:

鹰 大象 狼蛛 龟鳖 老虎

我按首字母分组:

Animals.GroupBy(animal => animal.First())

结果序列中IGroupings 的元素是否与输入序列的顺序相同?

【问题讨论】:

    标签: c# linq group-by linq-to-objects ilookup


    【解决方案1】:

    是的,他们将是:GroupBy (MSDN)

    IGrouping 对象的生成顺序基于源中生成每个 IGrouping 的第一个键的元素的顺序。分组中的元素按照它们在源代码中出现的顺序产生。

    【讨论】:

    • 糟糕。我现在觉得很懒。感谢您为我查找。 ;)
    【解决方案2】:

    来自MSDN page 的 GroupBy 引用:

    IGrouping<TKey, TElement> 对象的生成顺序基于 source 中生成每个 IGrouping<TKey, TElement> 的第一个键的元素的顺序。分组中的元素按照它们在源代码中出现的顺序产生。

    所以你的例子将导致:

    1. 第一组

      • 老鹰
      • 大象
    2. 第 2 组

      • 狼蛛
      • 老虎

    当然,这只适用于IEnumerable<T> 实现。 IQueryable<T> 实现没有这样的保证。

    【讨论】:

      猜你喜欢
      • 2015-05-05
      • 2017-01-23
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多