我在SQL表中定义了基本层次结构:
Id ParentId Name
----------------------
1 Null Root
2 1 Node1
3 2 Node2
有一种很好的LINQ方法来获取节点的完整路径吗?例如,我想传递Node2的Id并获得像Root/Node1/Node2
这样的完整路径。
提前谢谢你:)
答案 0 :(得分:2)
我想不出在单个查询中为任意长度路径执行此操作的方法。我可能会求助于使用循环,随时构建路径,直到到达没有父节点的节点。
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();
}