在C#中:
List<List<Point>> SectionList = new List<List<Point>>();
SectionList包含每个子列表在其包含的点数不同的点的列表。
我想弄清楚的是如何按子列表的计数按降序对SectionList进行排序。
因此,如果SectionList有3个点列表,排序后,SectionList [0]将包含所有3个列表的最高Count值。
谢谢, Mythics
答案 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());
希望这会有所帮助:)