Получение данных в виде дерева - PullRequest
1 голос
/ 05 сентября 2011

У меня есть такой стол

    TaskID------ParentID-------TaskName  
    1-----------Null-----------AllPro  
    2-----------1--------------Drink  
    3-----------2--------------Coco  
    4-----------2--------------Pepsi  
    5-----------1--------------Food  
    6-----------5--------------Macdo 

Я пытаюсь перевести его в древовидное представление, моя проблема в том, что когда я хочу установить связь между идентификатором задачи и идентификатором родителя, дублирование результата повторяется, как вы можете видеть в моем коде:

Отношение между двумя столбцами в одной таблице:

public IQueryable<tblTask> GetTaskTree()  
    {  
        var MySubject = from publisher in ObjectContext.tblTasks  
                        join subjects in ObjectContext.tblTasks  
                         on publisher.ParentTaskID equals subjects.TaskID  
                        select publisher;  
        return MySubject;  
    }  

Этот результат таков:

Drink
--Pepsi
--Coco
Pepsi
Coco
Food
---Mac
Mac

А вот элемент шаблона

Не могли бы вы помочь мне.

1 Ответ

0 голосов
/ 06 сентября 2011

Не думаю, что у вас должно быть объединение в вашем LINQ; Ваша таблица должна быть прочитана только один раз, и, имея все записи, вы должны знать, как их вложить друг в друга с помощью рекурсивного ключа ParentID, в основном каждая запись имеет Id, метку и знает, к какой другой родительской записи она принадлежит, нет причин присоединяться .

в старом программировании форм Windows, я, вероятно, написал бы небольшую процедуру для сканирования всех записей и соответственно создания узлов. Есть также некоторые иерархические свойства TreeView в целом, так что вы можете указать поле родительского узла или что-то подобное, и TreeView создаст иерархию для вас, но на самом деле я не уверен в этом с формами окон по умолчанию TreeView, я использовал так многие элементы управления, которые не могут вспомнить, какие из них имеют какие функции без проверки ... (DevExpress, Telerik, Infragistics ...).

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