12

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

4

1 回答 1

19

是的,对于Enumerable方法(适用于List<T>您提到的 LINQ to Objects),您可以依赖SelectWhereGroupBy. ToDictionary对于本质上无序的事物,例如or ,情况并非如此Distinct

来自Enumerable.GroupBy文档:

对象的IGrouping<TKey, TElement>生成顺序基于 source 中生成 each 的第一个键的元素的顺序IGrouping<TKey, TElement>。分组中的元素按照它们出现的顺序产生source

这不一定适用于IQueryable扩展方法(其他 LINQ 提供程序)。

于 2011-05-27T00:59:55.403 回答