我试图将SQL查询转换为vb中的
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()))
我的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)))
解决方法
在何处条件下,您不能使用Equals(Operator),例如Join LINQ query.这里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)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。