如何使用LINQ to SQL获取完整的节点路径?

时间:2009-01-25 01:08:44

标签: c# .net linq-to-sql

我在SQL表中定义了基本层次结构:

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

有一种很好的LINQ方法来获取节点的完整路径吗?例如,我想传递Node2的Id并获得像Root/Node1/Node2这样的完整路径。

提前谢谢你:)

1 个答案:

答案 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();
 }