2014-05-22 6 views
0

SQL Join 문을 LINQ to DataSet으로 변환하는 데 문제가 있습니다. 또한 LINQ 문에 Header 테이블을 조인 할 다른 테이블이 있다고 가정합니다. 아래는 내 Join 문입니다 - 어떤 도움을 주시면 감사하겠습니다. A는 Linq에 조인 수행LINQ To DataSet from SQL

FROM Header 
LEFT JOIN Address 
ON Header.Customer = Address.Customer 
AND Header.Company = Address.Company 
AND ((Header.ShipTo = 'TEMP' AND Header.DocNum = Address.ShipTo) 
    OR Header.ShipTo <> 'TEMP' AND Header.ShipTo = Address.ShipTo) 

답변

0

Equals() 방법을 사용한다. 여러 열을 사용하는 경우 비교를 위해 동일하게 구조화 된 익명 유형을 만들어야합니다.

from h in db.header 
join a in db.address 
on new { 
     cust = h.Customer, 
     comp = h.Company 
     } 
equals new 
     { 
     cust = a.Customer, 
     comp = a.Company 
     } 
where ((h.ShipTo == "TEMP" && h.DocNum == a.ShipTo) 
     || h.ShipTo != "TEMP" && h.ShipTo == a.ShipTo) 
select h; 
+0

THank you, sir! 또한 나중에이 특정 조인을 왼쪽 조인 (shiptos가 없을 수도 있음)에 추가해야하며이 LINQ 문에 조인 된 다른 테이블이 있으므로 WHERE 절이 조인 문에만 영향을 미칠 수있는 방법이 추가됩니다 다른 테이블과의 조인은 아닌가? – Mike

+0

왼쪽의 외부 조인은 where 절을 꺼내서 조인 문에 추가하여 수행 할 수있었습니다. 그런 다음 주소 테이블에 머리글 테이블을 두 번 가입시킨 다음 where 절의 각 시나리오마다 한 번 연결했습니다. – Mike