Linq to Objects:GroupBy方法是否保留元素的顺序?

138

Enumerable.GroupBy 方法在 LINQ to Objects 中会保留元素在分组中的顺序吗?


1
可能是 Preserving order with LINQ 的重复问题。 - nawfal
1个回答

198

MSDN上找到了答案:是的。

IGrouping<TKey, TElement>对象的顺序是基于源中产生每个IGrouping<TKey, TElement>的第一个键的元素顺序而产生的。组中的元素按照在源中出现的顺序依次生成。


5
虽然这并不直接与问题相关,但在寻找未经良好排序的内容时可能会遇到此问题,值得注意的是除非明确请求,否则 PLINQ 并不会出现这种情况。 - Ronan Thibaudau
21
这份文档仅适用于LINQ查询对象。对于特定的LINQ-to-SQL、LINQ-to-XML或LINQ-to-其他任何实现可能并非如此。 - leviathanbadger
2
@aboveyou00 在尝试将组按照除了组键以外的其他字段进行排序数小时后,你的评论让我受益匪浅。LINQ to MySql会自动通过组键对组进行排序!我不得不使用ToList将有序查询带到本地对象,然后在其上进行分组。谢谢你。 - Ivan Ferrer Villa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接