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

时间:2012-09-11 21:04:02

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

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

Eagle
Elephant
Tarantula
Terrapin
Tiger

我和第一封信分组:

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

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

2 个答案:

答案 0 :(得分:25)

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

  

IGrouping< TKey,TElement>根据源中元素的顺序产生对象,这些元素产生每个IGrouping< TKey,TElement>的第一个键。分组中的元素按它们在源中出现的顺序产生。

答案 1 :(得分:8)

引用来自MSDN page的GroupBy:

  

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

因此,您的示例将导致:

  
      
  1. 第1组

         
        
    •   
    •   
  2.   
  3. 第2组

         
        
    • 狼蛛
    •   
    •   
    •   
  4.   

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