使用LINQ获取分层数据

时间:2013-02-19 13:01:02

标签: linq-to-sql

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基于父雇员获得所有子雇员?

例如,如果我们想要员工E1的子记录,我们应该得到E3,E4,E5,E6

提前致谢...

1 个答案:

答案 0 :(得分:0)

使用单个LINQ查询无法完成此操作。但你可以使用递归函数smth来做到这一点:

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;
}