Как я могу отсортировать список на основе других свойств в списке - PullRequest
0 голосов
/ 09 мая 2019

Я хочу заказать список на основе порядка, в котором сформирована иерархия классов.

Например.

[ParentNode, ChildNode]
[A, B] //1st
[B, Y] 
[Y, Z] //last

Я не могу отсортировать по символам, мне нужно отсортировать по родительским или дочерним отношениям.

[ParentNode, ChildNode]
[NULL,      IDS]
[EFL,       PEFL001]
[IDS,       EFL]
[PCMN010,   PCMN014]
[PEFL001,   PCMN010]
[PEFL001,   PCMN010]

В приведенном выше примере вы можете увидеть некоторые примеры данных, эти примеры данных напоминают текущие возвращаемые значения запросов.

Строка (1) может быть помечена как «начальная» точка, поскольку ее ParentNode имеет значение NULL. Проблема в том, что Row (2) (ChildNode)! = Row (3) (ParentNode). При работе с дубликатами он должен быть достаточно умным, чтобы складывать их вместе (в произвольном порядке)

Ниже вы можете увидеть ожидаемые результаты. Обратите внимание, что row (n) .ChildNode = row (n + 1) .ParentNode за исключением дубликатов при их стеке. Мне нужно иметь возможность сделать это в LINQ или SQL

[ParentNode, ChildNode]
[NULL,      IDS]
[IDS,       EFL]
[EFL,       PEFL001]
[PEFL001,   PCMN010]
[PEFL001,   PCMN010]
[PCMN010,   PCMN014]

1 Ответ

0 голосов
/ 09 мая 2019

Вы должны быть в состоянии использовать либо IComparable, либо IComparer, и у обоих есть обобщения для безопасности типов. IComparable IComparer

Основная идея заключается в том, что вам нужно иметь возможность сравнивать с другим типом.Компаратор возвращает -1, 0 или 1 в зависимости от того, что должно быть первым.Вы можете посмотреть на объекты потомков и сделать это определение в сравнении.

...