6

在 C# 中:

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

SectionList 包含点列表,其中每个子列表包含的点数量不同。

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

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

谢谢,神话

4

3 回答 3

12

这应该有效:

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

(a,b) => a.Count - b.Count一个比较委托。该方法用成对的列表调用它以进行比较,如果短于,Sort则返回负数的委托,如果长于则返回正数,当两个列表长度相同时返回零。abab

于 2012-09-06T14:03:12.920 回答
8
var sortedList = SectionList.OrderByDescending(l=>l.Count()).ToList();   
于 2012-09-06T14:01:37.847 回答
3

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

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

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

SectionList.Sort(new ListCountComparer());

希望这可以帮助 :)

于 2012-09-06T14:07:49.887 回答