27

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

鹰
大象
狼蛛
龟鳖
老虎

我按第一个字母分组:

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

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

4

2 回答 2

42

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

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

于 2012-09-11T21:06:24.087 回答
12

引用 GroupBy 的MSDN 页面

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

因此,您的示例将导致:

  1. 第 1 组

    • 大象
  2. 第 2 组

    • 狼蛛
    • 龟鳖
    • 老虎

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

于 2012-09-11T21:06:30.453 回答