5 votes

Écriture d'une requête jointe à l'aide de Linq en VB.net

J'essaie de convertir une requête SQL en une requête linq en vb. Mais j'ai du mal à obtenir une syntaxe correcte.

Requête originale

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

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

6voto

Jignesh Thakker Points 1562

Sur la condition où vous ne pouvez pas utiliser Equals (Operator) comme Join LINQ query. Ici, Equals est une méthode de la classe d'objet à laquelle vous pouvez accéder en utilisant '.', par ex. employee.AncillaryId.Equals(iCompanyId)

Et aussi une autre chose dans la condition Where pour la nouvelle ligne VB.net a exigé '_'.

par exemple

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

2voto

Dave Doknjas Points 2626

Je pense qu'il vous manque juste un point - essayez :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X