Как отсортировать список по количеству?

В 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());

Надеюсь это поможет:)

Другие вопросы по тегам