2012-08-01 91 views
1

我有两个表:LINQ组由父母和父母的父母

工作

  • 日期
  • 小时
  • 雇员

员工

  • 雇员
  • EmployeeBossId

EmployeeBossId是对其他雇员,谁也可能有老板等等。

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

  • 鲍勃
  • 吉姆
    • 乔伊
    • 安东尼
      • 丽塔
    • 希德
    • 哈利
    • 萨利
  • 迈克

如果我提供吉姆的雇员我想乔伊,安东尼的总小时数(包括Ben和Rita的时间)和Sid。

我知道我在问一些问题,但是我很难决定如何去攻击这个问题,并希望这个问题对其他人有帮助。谢谢。

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

回答

1

SQL Server支持名为Common Table Expressions的东西,它基本上允许您执行'递归查询',这正是您需要解决父/母/父事件的问题。

这不幸的是不支持Linq。但是有一种方法可以实现,但是它需要C#代码中的一些SQL(在上下文中是精确的)。请参阅this questionthis howto

+0

感谢您指出我已经回答的问题。我不知道这样做的T-SQL方式,所以这就是为什么在我问我自己之前我没有找到这个问题。 – 2012-08-01 13:07:03