我有这样的树节点存储在数据库中
然后我使用此递归代码将平面结构构建为层次结构
public IList<GuidingNode> BuildGuidingTree(int professionId, int parentId)
{
var guidingTrees = _context.GuidingNode.Where(p => p.ProfessionId == professionId).ToList();
return FlatToHierarchy(guidingTrees, parentId);
}
private IList<GuidingNode> FlatToHierarchy(IEnumerable<GuidingNode> list, int parentId)
{
return list.Where(i => i.ParentId == parentId)
.Select((v, i) => new IVTSGuidingNode {
Id = v.Id,
ParentId = v.ParentId,
Title = v.Title,
Children = FlatToHierarchy(list, v.Id)
}).ToList();
}
因此,它变成这样
- Medical Field
- General Treatment
- Having a headache
- Patient Information
- Symptoms
- Giving out medicine
- Having a cold
- Specific Treatment
- Something
如果我想通过特定节点获取特定路径,那会是什么。
例如,如果我通过了
节点ID 3“头痛”作为该功能的参数(我还没有)。
我只会得到它的上方节点和下方节点。结果,它看起来像这样
- Medical Field
- General Treatment
**- Having a headache**
- Patient Information
- Symptoms
- Giving out medicine
不相关的节点将从树中删除。
我不太确定如何处理这种情况。任何想法将不胜感激。
谢谢。