2012-08-01 84 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