.GroupBy()是否保证其分组中的顺序?

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

鹰
象
狼蛛
龟
虎

我按第一封信分组:

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

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

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

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

从GroupBy的MSDN页面引用:

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

所以你的例子会导致:

  1. 第1组

  2. 第2组

    • 狼蛛

当然,这仅适用于IEnumerable实现。 IQueryable实现没有这样的保证。