c# - 根据组数对列表进行排序

标签 c# linq group-by

我想根据 IGrouping 的元素 countsList 进行排序。

就是这样,理想情况下列表应该是相同的。我会妥协一个新列表,但元素应该是完全相同的原始对象,而不是副本(无论多么浅),绝对不是匿名对象。

具体来说:我们有一个具有许多属性的实体,以及一个此类对象的列表。我们想按某些属性(名称、地址...)(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/

相关文章:

mysql - SQL-按特定字段分组并连接另一个字段

sql - PostgreSQL 通过 group by 获得相对平均值

c# - session 变量立即为空..ASP.net Core

c# - 如何实现 MaxOrDefault(x => x.SomeInt) LINQ 扩展?

linq - linq“不在”查询无法解决我的期望

c# - 从配对列表中删除 'duplicates'

mysql - 从查询执行中删除使用临时和文件排序

c# - 为什么我的索引器不工作?

c# - 使用 protobuf-net 反序列化时数组不匹配

c# - 如何将由垂直线分隔的段落文本添加到 itextsharp 创建的 PDF 中