繁体   English   中英

如何使用Linq进行多级父子排序?

[英]How can I do a multi level parent-child sort using Linq?

如果我有一个如下所示的表结构,如何使用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

使用邻接列表执行分层搜索/排序并不容易,尤其是在Linq中。

我不会在这里编写一大块代码来执行此操作,而是将您推荐给已经完成此操作的其他人:

Linq AsHierarchy()扩展方法

这会将邻接列表转换为实际的树结构,然后以分层方式轻松显示/搜索/排序。

我想这会做到的。 这是未经测试的,所以让我知道:

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

我打赌

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

就足够了,只有你必须指定状态LoadWith语句,Linq才能完成剩下的工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM