LINQ的Enumerable方法是否保持元素的相对顺序?

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


是的,对于Enumerable方法(LINQ to Objects,适用于您提到的List<T> ),您可以依赖SelectWhereGroupBy返回的元素的顺序。 对于像ToDictionaryDistinct这样天生无序的事物,情况并非如此。

来自Enumerable.GroupBy文档:

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

对于IQueryable扩展方法(其他LINQ提供者),这不一定是正确的。

链接地址: http://www.djcxy.com/p/34233.html

上一篇: Do LINQ's Enumerable Methods Maintain Relative Order of Elements?

下一篇: LINQ OrderBy with more than one field