从特定节点构建树

时间:2019-10-30 10:27:42

标签: c# entity-framework linq data-structures treeview

我有这样的树节点存储在数据库中

enter image description here

然后我使用此递归代码将平面结构构建为层次结构

    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

不相关的节点将从树中删除。

我不太确定如何处理这种情况。任何想法将不胜感激。

谢谢。

0 个答案:

没有答案