.GroupBy()是否保证其分组中的顺序?
假设我有一个(有序的)动物序列:
鹰 象 狼蛛 龟 虎
我按第一封信分组:
Animals.GroupBy(animal => animal.First())
结果序列中的IGrouping
元素是否与输入序列的顺序相同?
是的,它们将是: GroupBy(MSDN) 。
IGrouping
对象的生成顺序基于源中元素的顺序,这些元素生成每个IGrouping 的第一个键。 分组中的元素按它们在源中出现的顺序生成。
从GroupBy的MSDN页面引用:
IGrouping
对象的生成顺序基于源中元素的顺序,这些元素生成每个IGrouping
的第一个键。 分组中的元素按它们在源中出现的顺序生成。
所以你的例子会导致:
第1组
- 鹰
- 象
第2组
- 狼蛛
- 龟
- 虎
当然,这仅适用于IEnumerable
实现。 IQueryable
实现没有这样的保证。