Как я могу сделать многоуровневую родительско-дочернюю сортировку с помощью Linq? - PullRequest
5 голосов
/ 29 марта 2010

Как я могу сделать многоуровневую родительско-дочернюю сортировку с использованием Linq, если у меня есть структура таблицы, подобная приведенной ниже:

[Table: Sections]  
Id   Seq   Name        ParentSectionId  
1    1     TOP         NULL  
2    1     AAAA        1  
3    2     SSSS        1
4    3     DDDD        1  
5    1     SectionA1   2
6    2     SectionA2   2  
7    1     SectionS1   3  
8    3     ASummary    2  

Ожидаемый результат сортировки:

TOP  
  AAAA  
    SectionA1  
    SectionA2  
    ASummary  
  SSSS  
    SectionS1  
  DDDD  

Ответы [ 3 ]

7 голосов
/ 29 марта 2010

Выполнение иерархического поиска / сортировки со списком смежности - задача не из легких, особенно в Linq.

Вместо того чтобы писать здесь большой блок кода, я отошлю вас к кому-то еще, кто уже сделал это:

Метод расширения Linq AsHierarchy ()

Это преобразует список смежности в фактическую древовидную структуру, которую затем легко отображать / искать / сортировать иерархически.

0 голосов
/ 29 марта 2010

Бьюсь об заклад

from section in db.Sections
where section.sec=0
orderby section.Name

будет достаточно, а Linq сделает все остальное только вы должны указать состояние LoadWith оператора

0 голосов
/ 29 марта 2010

Я думаю, что это сделает это. Это не проверено, поэтому дайте мне знать:

from section in db.Sections
group section by section.ParentSectionId into childGroup
orderby childGroup.Key
from childSection in childGroup.OrderBy(child => child.Seq)
select childSection
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...