假设我有一个(有序的)动物序列:
鹰 大象 狼蛛 龟鳖 老虎
我按第一个字母分组:
Animals.GroupBy(animal => animal.First())
结果序列中 s的元素是否IGrouping
与输入序列的顺序相同?
假设我有一个(有序的)动物序列:
鹰 大象 狼蛛 龟鳖 老虎
我按第一个字母分组:
Animals.GroupBy(animal => animal.First())
结果序列中 s的元素是否IGrouping
与输入序列的顺序相同?
是的,它们将是:GroupBy (MSDN)。
IGrouping<TKey, TElement> 对象的生成顺序基于源中生成每个 IGrouping<TKey, TElement> 的第一个键的元素的顺序。分组中的元素按照它们在源中出现的顺序产生。
引用 GroupBy 的MSDN 页面:
对象的
IGrouping<TKey, TElement>
生成顺序基于 source 中生成 each 的第一个键的元素的顺序IGrouping<TKey, TElement>
。分组中的元素按照它们在源中出现的顺序产生。
因此,您的示例将导致:
第 1 组
- 鹰
- 大象
第 2 组
- 狼蛛
- 龟鳖
- 老虎
当然,这只适用于IEnumerable<T>
实现。IQueryable<T>
实现没有这样的保证。