考虑数据库中的以下行: Id | Parent__________________1 null2 13 24 35 null6 5 具有空Parent的每个Id是“Owner”/“Super Parent”. 收集父母及其子女的最佳方法,表现明智是什么?我应该使用LINQ还是存储
Id | Parent __________________ 1 null 2 1 3 2 4 3 5 null 6 5
具有空Parent的每个Id是“Owner”/“Super Parent”.
收集父母及其子女的最佳方法,表现明智是什么?我应该使用LINQ还是存储过程?
我希望最终结果是IEnumerable< IEnumerable< int>>.
在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
这给出了:
id parent head 1 NULL 1 2 1 1 3 2 1 4 3 1 5 NULL 5 6 5 5
请注意,我更改了您的示例数据,因此第2行不再是其自身的子项,而是第1行的子项.