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

ver*_*ald 10 c# linq enumerable

假设我List<Foo> foos的元素的当前顺序很重要.如果我然后应用LINQ Enumerable方法GroupBy,Where或者Select,我可以依赖结果IEnumerable<Foo>以与原始列表相同的相对顺序进行迭代吗?

Meh*_*ari 17

是的,Enumerable方法(LINQ到对象,它适用于List<T>你所提到的),你可以依靠通过返回的元素的顺序Select,WhereGroupBy.这不是事情本身就很无序等的情况下ToDictionaryDistinct.

Enumerable.GroupBy文档:

根据IGrouping<TKey, TElement>源中元素的顺序生成对象,这些元素生成每个对象的第一个键IGrouping<TKey, TElement>.分组中的元素按其出现的顺序生成source.

对于IQueryable扩展方法(其他LINQ提供程序),这不一定如此.