如何获得LINQ to SQL的完整节点路径?

问题描述:

我有一个SQL表中定义的基本层次:如何获得LINQ to SQL的完整节点路径?

Id ParentId Name 
---------------------- 
1  Null  Root 
2  1   Node1 
3  2   Node2 

是否有一个良好的LINQ十岁上下的方式来获得一个节点的完整路径?例如,我想通过Node2的Id并获得像Root/Node1/Node2这样的完整路径。

预先感谢您:)

我不能想办法在任意长度路径单个查询做到这一点。我可能会诉诸使用循环,随着时间的推移建立路径,直到你到达没有父节点的节点。

var node = db.Nodes.Where(n => n.Name == "Node2").SingleOrDefault(); 
string path = string.Empty; 
while (node != null) 
{ 
    path = string.Format("/{0}{1}", node.Name, path); 
    node = db.Nodes.Where(n => n.ParentId == node.Id).SingleOrDefault(); 
}