列表中的不同项按其在列表中的计数排序

本文关键字:列表 排序 | 更新日期: 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();