5

vbでSQLクエリをlinqクエリに変換しようとしています。しかし、構文を正しくするのに問題があります。

元のクエリ

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

マイリンク

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

2 に答える 2

6

where条件では、Join LINQクエリのようにEquals(Operator)を使用できません。ここで、Equalsはオブジェクトクラスのメソッドであるため、「。」を使用してアクセスできます。例えばemployee.AncillaryId.Equals(iCompanyId)

また、改行VB.netのWhere条件に「_」が必要なことももう1つあります。

例えば

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)))
于 2012-09-13T16:42:11.147 に答える
2

ドットが欠けているだけだと思います-試してください:

...b.EndDate.Equals(DateTime.Today)
于 2012-09-13T16:35:10.077 に答える