Как отсортировать список по количеству?
В C#:
List<List<Point>> SectionList = new List<List<Point>>();
SectionList содержит списки точек, в которых каждый подсписок различается по количеству точек.
То, что я пытаюсь выяснить, это как отсортировать SectionList по количеству подсписков в порядке убывания.
Таким образом, если бы в SectionList было 3 списка точек, после сортировки SectionList[0] содержал бы наибольшее значение Count из всех 3 списков.
Спасибо мифы
3 ответа
Это должно работать:
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());
Надеюсь это поможет:)