Построить дерево из определенного узла - PullRequest
0 голосов
/ 30 октября 2019

У меня есть узлы дерева, хранящиеся в базе данных, подобные этому

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

Дело в том, что если бы я хотел получить конкретный путь по конкретному узлу.

Например,Если бы я передал

NODE ID 3 «Наличие головной боли» в качестве параметра функции (у меня ее пока нет.)

Я бы получил только еенад узлами и под узлами. В результате это выглядело бы так:

- Medical Field
    - General Treatment
        **- Having a headache**
            - Patient Information
            - Symptoms
            - Giving out medicine

Несвязанные узлы были бы удалены из дерева.

Я не совсем уверен, как справиться с этой ситуацией. Любые идеи будут оценены.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...