如何按计数对列表进行排序?

时间:2012-09-06 14:00:28

标签: c# .net list sorting

在C#中:

List<List<Point>> SectionList = new List<List<Point>>();

SectionList包含每个子列表在其包含的点数不同的点的列表。

我想弄清楚的是如何按子列表的计数按降序对SectionList进行排序。

因此,如果SectionList有3个点列表,排序后,SectionList [0]将包含所有3个列表的最高Count值。

谢谢, Mythics

3 个答案:

答案 0 :(得分:11)

这应该有效:

SectionList.Sort((a,b) => a.Count - b.Count);

(a,b) => a.Count - b.Count是比较代表。 Sort方法使用要比较的列表对调用它,如果a短于b则返回负数的代理,如果a更长则返回正数比b,当两个列表的长度相同时为零。

答案 1 :(得分:7)

var sortedList = SectionList.OrderByDescending(l=>l.Count()).ToList();   

答案 2 :(得分:3)

您可以创建自定义比较器。

public class ListCountComparer : IComparer<IList> {
    public int Compare(IList x, IList y) {
        return x.Count.CompareTo(y.Count);
    }
}

然后你可以像这样对你的列表进行排序:

SectionList.Sort(new ListCountComparer());

希望这会有所帮助:)