Фильтрация узлов дерева с помощью LINQ? (левые объединения и шаблоны иерархических данных) - PullRequest
0 голосов
/ 09 февраля 2012

Я хотел бы заполнить древовидную структуру и использовать иерархическую таблицу данных для построения уровней.

Области> Группы> Станции> Задачи

В некоторых случаях я хочу отображать задачи только в том случае, если они имеют тип задачи 13.

Проверьте это:

var gnarly = from a in db.tAreas
    join g in db.tGroups on a.ID_area equals g.ID_area
    join s in db.tStations on g.ID_group equals s.ID_group
    join t in
        (from T in db.tTasks
        where T.Task_Type == 13
        select T) on s.ID_station equals t.ID_Station
    into t_Filtered
    from tf in t_Filtered.DefaultIfEmpty()
    select new
    {
        tGroups = a.tGroups,
        tCaption = a.tCaption
    };

Обычно, я бы использовал левое соединение, поэтому я пробую что-то типа типа / DefaultIfEmpty ... однако, как я могу выбрать область, в которой есть только задачи с правильным типом ?? Я думаю, что секрет заключается в формировании выбора нового, но так как моя иерархия основана на списках, составленных из списков, составленных из списков из списков ... Я не знаю, как я могу это осуществить. Я не понимаю смысла до уровня task_type из областей.

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

...