列表中的不同项按其在列表中的计数排序
本文关键字:列表 排序 | 更新日期: 2023-09-27 18:03:44
我有一个树的列表
List<Tree> trees;
...
filter_trees = trees.Distinct().ToList();
我想选择不同的树,它是基于Tree
类的相等函数来区分不同的树。现在我需要根据它们在trees
中的频率(计数)来排序这些不同的树。
它可能需要一个group by
声明,但我更喜欢Distinct
,因为它没有参数,并且基于我编写的特定Equals
函数工作。
您仍然可以在一个LINQ链中完成所有操作。GroupBy将尊重您的相等比较,然后您可以选择一个既包含树又包含计数的复杂项,然后按计数排序,然后拔出树。
var orderedTrees = trees
.GroupBy(t => t)
.Select(g => new
{
Tree = g.Key,
Count = g.Count()
})
.OrderBy(x => x.Count)
.Select(x => x.Tree)
.ToList();