Упорядочение списка по двум свойствам: 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 вы должны будете создать новый список.