自我参考获取所有链接记录父母和儿童

时间:2015-12-15 17:21:18

标签: c# sql-server entity-framework

我想使用实体框架从自引用表中选择所有相关记录。我没有任何具体的水平。它适用于所有孩子和所有父母的所有相关记录。以下是一些示例数据。因此,如果我将ID 5传递给我的函数,它应该给我ID为1,4,5,7,8的记录。

5是Id 7的父ID,7是Id 8的父ID。类似地,5的父ID是1,1也是Id 4的父ID。

因此,我希望选择Id 5下方和上方的所有记录。

数据来源

Id  Name    ParentId
1   Test 1  NULL
2   Test 2  NULL
3   Test 3  NULL
4   Test 4  1
5   Test 5  1
6   Test 6  4
7   Test 7  5
8   Test 7  7

预期

1   Test 1  NULL
4   Test 4  1
5   Test 5  1
7   Test 7  5
8   Test 7  7

1 个答案:

答案 0 :(得分:0)

我得到了逻辑。我们需要首先识别根节点,然后从根节点找到链接的族树。 我们可以编写一个CTE来查找根节点,或者我们可以添加一个新列来保存根节点id。 Sql Fiddle With Root Node