Сортировка объектов C # с помощью IComparable - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь найти то, что я делаю неправильно, в следующем коде, чтобы отсортировать список определенных элементов объекта.

Объект является сетевой группой, которая имеет UID (некоторый идентификатор) исписок членов (представлен в виде списка всех UID членов)

(циклы недействительны - A не может состоять из B, когда B состоит из A)

Например:

Group1 - UID: 1 UID членов: 2, 3.

Group2 - UID: 4 UID членов: 6.

Group3 - UID: 5 UID членов: 7.

Group4 - UID: 2 члена UID: 4.

Group5 - UID: 3 члена UID: 5.

(UID 7 и 4 не являются группами)

Это также порядок создания объектов и добавления их в список сетевых групп.

Так я реализовал 'CompareTo', где объект реализует IComparable -

    public int CompareTo(NetworkObjectGroup other)
    {
        if(this.MembersByUid.Contains(other.UID))
        {
            return 1; 
        }

        else if (other.MembersByUid.Contains(this.UID))
        {
            return -1;
        }

        else
        {
            return 0;
        }
    }

Я использую следующий вызов для сортировки списка -

this.MainWindow.DbObject.NetworkObjectGroups.Sort();

В конце вызова список не сортируется и остаетсяТо же самое ... Что я делаю не так?

После сортировки я добавляю вывод в таблицу данных и показываю в пользовательском интерфейсе приложения WPF, что каждая строка представляет один из объектов, это результат - result

Я хочу, чтобы он сортировался по зависимостям, например:

Group2

Group3

Group4

Group5

Group1

Спасибо заранее.

...