2014-12-23 5 views
0

많은 시도를 한 후 여기에 질문을 게시하기로 결정했습니다. 나는 세 개의 테이블에서 속성으로 내가에게 그룹을 원하는, 그리고그룹과 LINQ 다중 조인

var query = 
      //Customers 
      from customer in context.Customers 

      //Engineer 1 
      join engineer1 in context.Employees on customer.PrimaryEngineer equals 
      engineer1.EmployeeId into eng1 
      from engineer1 in eng1.DefaultIfEmpty() 

      //Engineer Top 
      join engineerTop in context.Employees on customer.TopEngineer equals 
      topEngineer.EmployeeId into top 
      from engineerTop in top.DefaultIfEmpty() 

: 내 코드는 다음과 같다 고객, 직원들은

을 (이 모든 엔지니어 반복) 어떻게 내가로부터 속성별로 그룹화 세 테이블?

다음 코드 :

  group new {customer, engineer1, engineerTop} by new {customer.Name .....} 

engineer1으로 인해 작동하지 않고 engineerTop이 같은 맥락에서인가?

매우 혼란 스럽습니다.

덕분에 모든 당신의 도움

답변

1

을 위해 당신은 아마도 같은 이름을 가진 여러 속성에 그룹의 익명 형식 속성에 이름을 할당해야합니다. (EmployeeId의 두 배)

var query = (
     //Customers 
     from customer in context.Customers 

     //Engineer 1 
     join engineer1 in context.Employees on customer.PrimaryEngineer equals 
     engineer1.EmployeeId into eng1 
     from engineer1 in eng1.DefaultIfEmpty() 

     //Engineer Top 
     join engineerTop in context.Employees on customer.TopEngineer equals 
     engineerTop.EmployeeId into top 
     from engineerTop in top.DefaultIfEmpty() 
     group new {customer, engineer1, engineerTop} by new {CustName = customer.Name, EmpId1 = engineer1.EmployeeId, EmpId2 = engineerTop.EmployeeId} into grp 
     select new 
     { 
      Name = grp.Key.CustName, 
      EmpId1 = grp.Key.EmpId1, 
      EmpId2 = grp.Key.EmpId2 
     }); 
+0

답장을 보내 주셔서 감사합니다. 나는 당신에게 당신의 대답에 관해 한점을주고 싶습니다만, 나는 아직 충분한 평판이 없기 때문에 그렇게 할 수 없습니다. About : (EmployeeId의 2 배) -> 네, 많은 버그가 있고 매우 나쁜 관계 지향적 인 이미 생성 된 데이터베이스로 작업하고 있습니다 ... 심지어 외래 키가 없습니다. 답장을 보내 주셔서 다시 한 번 고맙습니다. – Alvykun