gpt4 book ai didi

vb.net - 在 VB.net 中使用 Linq 编写连接查询

转载 作者:行者123 更新时间:2023-12-04 17:53:17 25 4
gpt4 key购买 nike

我试图在 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)))

最佳答案

在 where 条件下,您不能像 Join LINQ 查询那样使用等于(运算符)。这里的 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)))

关于vb.net - 在 VB.net 中使用 Linq 编写连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12410821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com