Fil*_*erg 5 .net sql linq linq-to-entities entity-framework
考虑数据库中的以下行:
Id | Parent
__________________
1 null
2 1
3 2
4 3
5 null
6 5
Run Code Online (Sandbox Code Playgroud)
每个Id
有一个null
Parent
是"所有者"/"超级父母".
收集父母及其子女的最佳方法,表现明智是什么?我应该使用LINQ还是存储过程?
我想要最终的结果IEnumerable<IEnumerable<int>>
.
And*_*mar 10
在SQL中,您可以使用CTE进行查询.例如,要检索其父级和树中最高父级的节点列表:
declare @t table (id int, parent int)
insert @t (id, parent) values (1, null), (2,1), (3,2), (4,3), (5,null), (6,5)
; with cte as (
select id, parent, id as head
from @t
where parent is null
union all
select child.id, child.parent, parent.head
from @t child
join cte parent
on parent.id = child.parent
)
select *
from cte
Run Code Online (Sandbox Code Playgroud)
这给出了:
id parent head
1 NULL 1
2 1 1
3 2 1
4 3 1
5 NULL 5
6 5 5
Run Code Online (Sandbox Code Playgroud)
请注意,我更改了您的示例数据,因此第2行不再是其自身的子项,而是第1行的子项.
归档时间: |
|
查看次数: |
5331 次 |
最近记录: |