如何获得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();
}