【发布时间】:2012-09-04 20:47:32
【问题描述】:
假设我有一个(有序的)动物序列:
鹰 大象 狼蛛 龟鳖 老虎我按首字母分组:
Animals.GroupBy(animal => animal.First())
结果序列中IGroupings 的元素是否与输入序列的顺序相同?
【问题讨论】:
标签: c# linq group-by linq-to-objects ilookup
假设我有一个(有序的)动物序列:
鹰 大象 狼蛛 龟鳖 老虎我按首字母分组:
Animals.GroupBy(animal => animal.First())
结果序列中IGroupings 的元素是否与输入序列的顺序相同?
【问题讨论】:
标签: c# linq group-by linq-to-objects ilookup
是的,他们将是:GroupBy (MSDN)。
IGrouping
对象的生成顺序基于源中生成每个 IGrouping 的第一个键的元素的顺序。分组中的元素按照它们在源代码中出现的顺序产生。
【讨论】:
来自MSDN page 的 GroupBy 引用:
IGrouping<TKey, TElement>对象的生成顺序基于 source 中生成每个IGrouping<TKey, TElement>的第一个键的元素的顺序。分组中的元素按照它们在源代码中出现的顺序产生。
所以你的例子将导致:
第一组
- 老鹰
- 大象
第 2 组
- 狼蛛
- 鳖
- 老虎
当然,这只适用于IEnumerable<T> 实现。 IQueryable<T> 实现没有这样的保证。
【讨论】: