从自引用数据库表中填充递归数据结构

时间:2009-12-29 19:09:30

标签: 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到SQL DataContext到递归对象。我知道它可能涉及ForEach和递归函数调用;我只是无法理解它。

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

相关问题