2013-02-20 67 views
4

我有層次結構,其中部門包含團隊和團隊包含委託。我想要做的是獲得一個給定部門下的代表名單。我試圖這樣做:Linq其中在條款

var teams = from tms in db.Teams 
      where tms.DepartmentID == DepartmentID 
      select tms; 

var TeamDelegates = from tds in db.J_TeamDelegates 
        where tds.TeamID in teams.TeamID //error here 
        select tds; 

但團隊集合不允許您引用特定的屬性,就好像它是一個集合。我想說的是「在團隊集合中選擇TeamIDs的所有代表」。

回答

7
var TeamDelegates = from tds in db.J_TeamDelegates 
        where teams.Any(x => x.TeamID == tds.TeamID) 
        select tds; 
+0

雖然這直接回答這個問題,我認爲這是值得一提的是我表達它(有兩個'SelectMany'呼叫)的方法是要簡單得多。 – 2013-02-20 18:11:53

1
var TeamDelegates = db.Teams 
       .Where(tms => tms.DepartmentID == DepartmentID) 
       .SelectMany(tms => db.J_TeamDelegates 
             .Where(tds => tds.TeamID == tms.TeamID)) 
2

我想你可以在這裏使用一個連接。

var TeamDelegates = from tms in db.Teams 
        where tms.DepartmentID == DepartmentID 
        join tds in db.J_TeamDelegates on tms.TeamID equals tds.TeamID 
        select tds; 
1
var delegates = db.Departments 
    .Where(department => department.ID == 123) 
    .SelectMany(department => department.Teams) 
    .SelectMany(team => team.Delegates);