2013-02-19 3 views
1
ID Name Designation PID 
1 E1 D1   0 
2 E2 D2   0 
3 E3 D3   1 
4 E4 D3   1 
5 E5 D4   3 
6 E6 D4   3 
7 E7 D4   2 
8 E8 D4   2 

Как мы можем получить всех дочерних сотрудников на основе родительского сотрудника с помощью LINQ?Получить Иерархические данные с использованием LINQ

Для например. Если мы хотим, чтобы дочерние записи для сотрудников E1 мы должны получить E3, E4, E5, E6

Спасибо заранее ...

ответ

0

Вы не можете сделать это с помощью одного одного LINQ запрос. Но вы можете сделать это с помощью рекурсивной функции как л:

IList<Employee> GetAllChildren(IList<Employee> employees, int pid) 
{ 
    var children = employees.Where (e => e.PID == pid).ToList(); 
    children.AddRange (children.SelectMany (e => GetAllChildren (employees, e.ID)).ToList()); 

    return children; 
} 
+0

Спасибо Су много для решения .... Это дает точный результат .. – user2087064

+0

Как я могу связать эти данные в виде дерева .. – user2087064