Do LINQ';s可枚举方法维护元素的相对顺序

本文关键字:维护 方法 元素 顺序 相对 枚举 LINQ Do | 更新日期: 2023-09-27 17:57:43

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

Do LINQ';s可枚举方法维护元素的相对顺序

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

来自Enumerable.GroupBy文档:

CCD_ 13对象按照基于源中产生每个CCD_ 14的第一个密钥的元素的顺序的顺序产生。分组中的元素按照它们在source中出现的顺序产生。

对于IQueryable扩展方法(其他LINQ提供程序),这不一定是真的。