LINQ组由父母和父母的父母组成

时间:2012-08-01 10:44:46

标签: linq linq-to-entities

我有两张桌子:

工作

  • 日期
  • 小时
  • EMPLOYEEID

员工

  • EMPLOYEEID
  • EmployeeBossId

EmployeeBossId是指另一名员工,也可能有老板等等。

所有者可以处于无限多个层次结构中(尽管实际上它只有3个级别)。我正在寻找一个LINQ语句形式的聪明的数据库调用,它可以接收 EmployeeId 并告诉我该员工的所有小时的总和,包括任何“子”员工 - 按每个直属子员工分组!

示例

  • 鲍勃
  • 吉姆
    • 乔伊
    • 安东尼
      • 丽塔
    • 西特
    • 哈利
    • 萨利
  • 麦克

如果我提供Jim的EmployeeId,我想要Joey,Anthony(包括Ben和Rita的小时数)和Sid的总小时数。

我知道我的要求有点多,但我无法决定如何攻击这个,并希望那里的其他人很清楚。感谢。

我正在寻找在一个数据库调用中完成的所有事情。

1 个答案:

答案 0 :(得分:1)

SQL Server支持名为Common Table Expressions的内容,它基本上允许您执行“递归查询”,这正是解决父/父父事物所需的问题。

Linq不支持这一点。但有一种方法可以做到这一点,但它需要在您的C#代码中使用一些SQL(在上下文中是准确的)。请参阅this questionthis howto