假设我有List<Foo> foos
当前元素顺序很重要的地方。如果我然后应用 LINQ Enumerable 方法,例如GroupBy
,Where
或Select
,我可以依靠结果IEnumerable<Foo>
以与原始列表相同的相对顺序进行迭代吗?
问问题
2506 次
1 回答
19
是的,对于Enumerable
方法(适用于List<T>
您提到的 LINQ to Objects),您可以依赖Select
、Where
或GroupBy
. ToDictionary
对于本质上无序的事物,例如or ,情况并非如此Distinct
。
来自Enumerable.GroupBy文档:
对象的
IGrouping<TKey, TElement>
生成顺序基于 source 中生成 each 的第一个键的元素的顺序IGrouping<TKey, TElement>
。分组中的元素按照它们出现的顺序产生source
。
这不一定适用于IQueryable
扩展方法(其他 LINQ 提供程序)。
于 2011-05-27T00:59:55.403 回答