我有一个自引用表,它有 ID,ParentID(可为空)。
因此,该表包含许多节点,每个节点可以是层次结构中的根(父节点为空),或者是层次结构的任何级别(父节点存在于表的其他位置)。
给定一个任意起始节点,是否有一个优雅的 linq 查询将从该节点返回层次结构的所有子节点?
谢谢。
最佳答案
如果您想选择一个节点的所有直接子节点,像下面这样的简单查询应该可以完成这项工作:
from item in table
where item.ID == parentID;
select item
如果您想选择节点的所有后代,这对于 LINQ 是不可能的,因为它需要递归或 LINQ(和 SQL)不提供的堆栈。
另见:
关于c# - 层次结构问题 -> 用 Linq Join 替换递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1435229/