c# - 从自引用数据库表填充递归数据结构

标签 c# sql-server linq linq-to-sql

本题引用http://www.matthidinger.com/archive/2009/02/08/asp.net-mvc-recursive-treeview-helper.aspx

假设我有一个如下所示的表格:

alt text
(来源:matthidinger.com)

我有一个递归数据结构,如下所示:

public class TreeNode
{
    public TreeNode(){}
    public string NodeId { get; set; }
    public string ParentId { get; set; }
    public string Name { get; set; }
    public IEnumerable<TreeNode> Children { get; }
}

如何使用 Linq 从表中填充此递归数据结构?

注意:为了这个问题的目的,请假设我已经有了一个非常高效的表;即它完全驻留在内存中,或者正在使用 CTE 进行访问。实际上,我只是在寻找 Linq 查询以将其从 Linq to SQL DataContext 获取到递归对象。我知道它可能会涉及 ForEach 和递归函数调用;我只是无法完全理解它。

提前致谢。

最佳答案

我认为您最好的选择是使用 CTE 在 SQL 中查询层次结构。 LINQ2SQL 和分层/关系数据不能很好地混合。参见 Hierarchical data in Linq - options and performance .

关于c# - 从自引用数据库表填充递归数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1976325/

相关文章:

c# - 在 .NET 1.1 中使用数据集更新 oracle

SQL 日期时间格式仅限日期

c# - 使用 linq 进行验证/抛出异常

c# - Silverlight/C# 图像未找到异常处理

c# - 反射和方法使用

PHP MySql MsSql 如何插入或更新一个 ['] or ["] 或 [`] 字符?

sql-server - 如何添加一个新列来计算特定列中重复值的数量

c# - Linq 查询计数和 GroupBy

c# - LINQ - 加入 3 个表与分组和求和

c# - 如何更新序列化动态 JSON 中的元素值