IQueryable в иерархию

В настоящее время у меня есть IQueryable of Questions. В моем объекте «Вопрос» у меня есть «id» и «parentId», которые можно использовать для создания иерархии. В настоящее время я привязываю RadTreeView к IQueryable вопросов, и RadTreeView заботится о создании иерархии, поскольку я определяю dataId и dataParentId для TreeView в разметке. Теперь мне нужно фактически отсортировать данные в иерархию ДО передачи их в мой RadTreeView. Как я могу это сделать?


person Brian David Berman    schedule 09.12.2009    source источник
comment
Пожалуйста, раскройте, что вы подразумеваете под сортировкой по иерархии. Вы хотите создать фактический граф объектов или все еще думаете о нем как о табличных данных?   -  person Bryan Batchelder    schedule 09.12.2009
comment
Просто как данные. В моем случае список вопросов в иерархическом порядке.   -  person Brian David Berman    schedule 09.12.2009


Ответы (2)


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

ParentID   ID      Sequence
1          7       1
1          4       2
1          9       3
2          6       4
2          5       5
2          3       6

..и т.д.

person Robert Harvey    schedule 09.12.2009
comment
Это просто привело бы родителей к вершине, а детей к низу. Мне нужно, чтобы он был фактически сгруппирован как иерархия в фактических данных. - person Brian David Berman; 09.12.2009
comment
Все еще не в след. Как вы определяете последовательность? - person Brian David Berman; 09.12.2009
comment
Вам нужен код, который проходит по дереву в правильном порядке, добавляя возрастающее число к таблице по мере продвижения. - person Robert Harvey; 09.12.2009

Если у вас есть доступ к SQL Server, вы можете настроить что-то с помощью общих табличных выражений, чтобы возвращать данные в правильном порядке. См.:

http://a-kicker-n.blogspot.com/2009/04/how-to-sort-hierarchical-recursive.html

См. также: Иерархические данные в Linq — параметры и производительность

person Robert Harvey    schedule 09.12.2009