c# - 层次结构问题 -> 用 Linq Join 替换递归?

标签 c# linq hierarchical-data

我有一个自引用表,它有 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/

相关文章:

c# - 如何在 STA 线程上与 Bootstrapper 同时运行动画 SplashScreen

c# - LINQ:在 IEnumerable<T> 中分配属性值

c# - 在列表中搜索列表中的元素

c# - 将 linq 模型转换为通用列表

sql - 如何对包含子组的有序列表进行 SQL 查询?

sql-server - 如何在sql server中为分层数据生成序列号

php - 如何从数据库的平面数组中创建嵌套注释数组

c# - 如何避免在布局页面中使用 "using System.Web.Optimization"

c# - 新的 MVC View ,每次都会出现 404,即使使用正确的 Controller

C# applicationSettings : how to update app. 配置?