【发布时间】:2013-06-13 14:47:53
【问题描述】:
下面的表格来自我的带有 Entity Framework 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)
【问题讨论】:
标签: .net vb.net linq linq-to-entities