我有以下表格,这些表格来自我的带有实体框架 5 的 SQL 数据库。
我想要做的是选择 tblUserBusiness.BUID 等于传入值或 Users.IsSysAdmin 等于 True 的所有用户。如果 Users.IsSysAdmin 等于 True,则不会有相关的 tblUserBusiness 记录,因此是 Left Outer Join。
我从以下 LINQ 查询开始,该查询正确过滤但不允许外部连接
businessUsers = (From u In db.Users
From bu In db.tblUserBusinesses
Where bu.BUID.Equals(buID) Or u.IsSysAdmin.Equals(True)
Select New Users With {.ID = u.ID,
.Name = u.Name,
.UserName = u.UserName}).ToList
然后我转到下面的查询,它允许外部连接,但我不知道如何实现Where bu.BUID.Equals(buID) Or u.IsSysAdmin.Equals(True)
businessUsers = (From u In db.Users
Group Join bu In db.tblUserBusinesses
On u Equals bu.User
Into userList = Group
Select New Users With {.ID = u.ID,
.Name = u.Name,
.UserName = u.UserName}).ToList
基本上我所追求的是等同于以下 TSQL 的 LINQ
SELECT Users.ID, Users.UserName, Users.Name
FROM Users LEFT OUTER JOIN tblUserBusiness ON Users.ID = tblUserBusiness.UserID
WHERE (Users.IsSysAdmin = 1) OR (tblUserBusiness.BUID = 5)