我想根据 IGrouping
的元素 counts 对 List
进行排序。
就是这样,理想情况下列表应该是相同的。我会妥协一个新列表,但元素应该是完全相同的原始对象,而不是副本(无论多么浅),绝对不是匿名对象。
具体来说:我们有一个具有许多属性的实体,以及一个此类对象的列表。我们想按某些属性(名称、地址...)(1) 对对象进行分组,然后(2) 计算每组中元素的数量。最后,我们希望根据这些计数对列表进行(3) 重新排序,方法是首先放置属于较大组的元素。
注意:我们的主要问题是我们似乎无法找到一种方法来保留对组元素中原始对象的引用。事实上,我们在 Linq 查询中所能选择的只是分组键(或键的属性),IGrouping
不会公开任何其他内容。我们也无法弄清楚如何将组元素与列表的元素相关联,除非查看数据(即使那样,我们也需要主键,我们无法将其添加到分组键或它会破坏分组的目的)。
最佳答案
var mySortedList = myList.GroupBy(x => x.Name).OrderByDescending(g => g.Count())
.SelectMany(x => x).ToList();
关于c# - 根据组数对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19517707/