Linq to Objects:GroupBy 是不是保留元素的顺序?

Posted

技术标签:

【中文标题】Linq to Objects:GroupBy 是不是保留元素的顺序?【英文标题】:Linq to Objects: does GroupBy preserve order of elements?Linq to Objects:GroupBy 是否保留元素的顺序? 【发布时间】:2010-11-29 23:09:54 【问题描述】:

LINQ to Objects 中的 Enumerable.GroupBy 是否保留组中元素的顺序?

【问题讨论】:

Preserving order with LINQ的可能重复 【参考方案1】:

在MSDN找到答案:是的。

IGrouping<TKey, TElement> 对象的生成顺序基于 source 中生成每个 IGrouping<TKey, TElement> 的第一个键的元素的顺序。分组中的元素按照它们在源代码中出现的顺序产生

【讨论】:

不是说它与问题直接相关,而是因为它可能是人们在发现事情不井井有条时落入的问题,因此可能有兴趣注意到 PLINQ 不是这种情况,除非明确要求. 该文档仅适用于 LINQ-to-objects。对于 LINQ-to-SQL、LINQ-to-XML 或 LINQ-to-anything-else 的特定实现,情况可能并非如此。 @aboveyou00 在尝试按组键以外的其他字段对组进行排序数小时后,您的评论挽救了我的一天。 LINQ to mysql 通过组键自动对组进行排序!我不得不使用 ToList 将有序查询带到本地对象,然后对其进行分组。谢谢。

以上是关于Linq to Objects:GroupBy 是不是保留元素的顺序?的主要内容,如果未能解决你的问题,请参考以下文章

LINQ to SQL class LINQ to sql Objects?

Linq之旅:Linq入门详解(Linq to Objects)

Linq学习随笔一------LINQ to Objects

从LINQ开始之LINQ to Objects(下)

LINQ To Objects - 加入空列表

从LINQ开始之LINQ to Objects(上)