【发布时间】:2013-10-31 07:31:54
【问题描述】:
我想根据IGroupings 的元素counts 对List 进行排序。
就是这样,理想情况下,列表应该是相同的。我会用一个新列表妥协,但元素应该是完全相同的原始对象,而不是副本(无论多么浅),绝对不是匿名对象。
具体来说:我们有一个具有许多属性的实体,以及一个此类对象的列表。我们想(1)按某些属性(名称、地址等)对对象进行分组,然后(2)计算每个组中的元素数量。最后,我们希望(3)根据这些计数重新排序列表,方法是将属于较大组的元素放在首位。
注意:我们的主要问题是我们似乎无法找到一种方法来保持对组元素中原始对象的引用。事实上,我们可以在 Linq 查询中选择的只是分组键(或键的属性),IGrouping 没有公开任何其他内容。我们也无法弄清楚如何将组元素与列表的元素相关联,除非查看数据(即使这样,我们也需要主键,我们无法将其添加到分组键或它会破坏分组的目的)。
【问题讨论】:
-
不写文字,只写一个带有示例属性的示例类,然后告诉我们,您要按哪些属性分组,最后按什么顺序选择
-
您可能缺少的是您的
IGrouping实际上也是该组中项目的可枚举。因此,一旦您对分组进行了排序,这只是将您的项目再次扁平化为单个列表的情况。 -
@ManishMishra:我个人认为这里不需要上课。实际上,该问题适用于任何具有单个属性的类。无论如何添加它有什么好处?
-
给出准确的场景,具有相似的代码副本,减少了猜测工作,同时也激发了直接编写工作代码的兴奋。此外,c# 比英语更吸引我。
-
非常感谢您的 cmets,考虑到问题的混乱,他们提供了令人惊讶的帮助。我在另一个答案中解释说,这确实是我的一个重大而根本的误解。