2012-09-13 2 views
4

VB에서 SQL 쿼리를 linq 쿼리로 변환하려고합니다. 하지만 문법을 올바르게 이해하는 데는 몇 가지 문제가 있습니다.VB.net에서 Linq를 사용하여 Join 쿼리 작성하기

원래 쿼리

SELECT b.* 
FROM History_Table_B b 
INNER JOIN Employee e ON b.EmployeeId = e.EmployeeId 
INNER JOIN Company c ON e.CompanyId = c.CompanyId 
WHERE e.AncillaryId = @AncillaryPersonId 
AND c.AncillaryId = @AncillaryCompanyId 
AND (b.EndDate is null OR b.EndDate >= convert(date, GetDate())) 

내 Linq에 내가 방금 점을 놓치고 생각

Dim result = From b In context.H_Table_B 
      Join employee In context.Employees 
      On b.EmployeeId Equals (employee.EmployeeId) 
      Join company In context.Companies 
      On employee.CompanyId Equals (company.CompanyId) 
      Where employee.AncillaryId Equals(iPerId) 
      And company.AncillaryId Equals (iCompanyId) 
      And ((b.EndDate Is Nothing) Or (b.EndDate Equals(DateTime.Today))) 

답변

5

을 (연산자) LINQ Join과 같습니다. 여기서 Equals는 객체 클래스의 메소드이므로 '.'을 사용하여 액세스 할 수 있습니다. 예 : employee.AncillaryId.Equals(iCompanyId)

또한 새 줄 VB.net의 Where 조건에는 '_'이 (가) 필요합니다.

From b In context.H_Table_B 
     Join employee In context.Employees 
     On b.EmployeeId Equals (employee.EmployeeId) 
     Join company In context.Companies 
     On employee.CompanyId Equals (company.CompanyId) 
     Where employee.AncillaryId.Equals(iPerId) _ 
     And company.AncillaryId.Equals(iCompanyId) _ 
     And ((b.EndDate Is Nothing) Or (b.EndDate.Equals(DateTime.Today))) 
2

는 - 시도 : 조건이 같음을 사용할 수없는 경우에

...b.EndDate.Equals(DateTime.Today) 
+0

Ack - 그렇지 않을 수도 있습니다. 죄송합니다. –

관련 문제