Упорядочение списка по двум свойствам: ParentID и ChildID

У меня есть класс, который имеет 3 свойства: имя, идентификатор и ParentID.

Мои данные:

        Name       ID     ParentID
        Event A    1      1
        Event B    2      1
        Event C    3      1
        Event D    4      2

У меня есть все в списке, и я пытался использовать OrderBy или, возможно, методы сортировки. Не уверен, что будет лучше.

Мне нужно, чтобы данные в списке были упорядочены таким образом, чтобы у события был следующий дочерний элемент в списке. Любая помощь по этому вопросу будет принята с благодарностью, я делаю это в VB, кстати. Спасибо!!

1 ответ

Решение

Вы можете отсортировать список следующим образом

list.Sort(Function(x, y) 2 * x.ParentID.CompareTo(y.ParentID) + _
                         x.ChildID.CompareTo(y.ChildID))

Пояснение: здесь я использую лямбда-выражение. Вы можете думать об этом как о некоем встроенном объявлении функции. CompareTo либо возвращает -1, 0 или же +1, Отрицательное число означает x меньше чем y, 0 оба равны и +1 средства x больше, чем y, Умножая первое сравнение на два, его знак имеет приоритет над вторым сравнением. Второй имеет эффект, только если первый возвращается 0,

Преимущество использования списков Sort Метод над LINQ заключается в том, что список сортируется на месте. С LINQ вы должны будете создать новый список.

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