在 C# 中:
List<List<Point>> SectionList = new List<List<Point>>();
SectionList 包含点列表,其中每个子列表包含的点数量不同。
我想弄清楚的是如何按子列表的数量按降序对 SectionList 进行排序。
因此,如果 SectionList 有 3 个点列表,排序后,SectionList[0] 将包含所有 3 个列表中的最高 Count 值。
谢谢,神话
这应该有效:
SectionList.Sort((a,b) => a.Count - b.Count);
是(a,b) => a.Count - b.Count
一个比较委托。该方法用成对的列表调用它以进行比较,如果短于,Sort
则返回负数的委托,如果长于则返回正数,当两个列表长度相同时返回零。a
b
a
b
var sortedList = SectionList.OrderByDescending(l=>l.Count()).ToList();
您可以创建一个自定义比较器。
public class ListCountComparer : IComparer<IList> {
public int Compare(IList x, IList y) {
return x.Count.CompareTo(y.Count);
}
}
然后你可以像这样对你的列表进行排序:
SectionList.Sort(new ListCountComparer());
希望这可以帮助 :)