LINQ的可枚举方法是否维持元素的相对顺序?

时间:2011-05-27 00:56:55

标签: c# linq enumerable

假设我有List<Foo> foos,其中元素的当前顺序很重要。如果我然后应用LINQ Enumerable方法,例如GroupByWhereSelect,我可以依赖生成的IEnumerable<Foo>以与原始列表相同的相对顺序进行迭代?

1 个答案:

答案 0 :(得分:16)

是的,对于Enumerable方法(LINQ to Objects,适用于您提到的List<T>),您可以依赖SelectWhere返回的元素的顺序或GroupBy。对于ToDictionaryDistinct等天生无序的内容,情况并非如此。

  

来自Enumerable.GroupBy文档:

     

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

IQueryable扩展方法(其他LINQ提供程序)不一定如此。