如果我有一个如下所示的表结构,如何使用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
答案 0 :(得分:7)
使用邻接列表执行分层搜索/排序并不容易,尤其是在Linq中。
不是在这里写一大段代码来做这件事,我会把你推荐给已经做过的人:
Linq AsHierarchy() Extension Method
这会将邻接列表转换为实际的树结构,然后以分层方式轻松显示/搜索/排序。
答案 1 :(得分:0)
我认为这样做会。这是未经测试的,所以让我知道:
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
答案 2 :(得分:0)
我打赌
from section in db.Sections
where section.sec=0
orderby section.Name
就足够了,Linq将完成其余的工作 只需要指定状态LoadWith语句