2013-02-20 2 views
4

부서에 팀이 있고 팀에 대표가 포함 된 계층 구조가 있습니다. 제가하려는 것은 주어진 부서 아래에 존재하는 대의원 목록을 얻는 것입니다. 나는이 방법을 시도 :Linq where 절

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; 

그러나 팀 컬렉션은 특정 속성을 컬렉션 인 것처럼 참조하도록 허용하지 않습니다. 내가 말하고자하는 것은 "팀 콜렉션에서 팀 ID가있는 모든 대리인을 선택하십시오."입니다.

답변

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

, 나는 그것이 내가 (이'SelectMany' 호출을)를 표현하는 방식이 훨씬 더 간단 협조 할 것 같아요. –

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