Entity Framework 5 を使用した SQL データベースから取得した以下のテーブルがあります。
私がしたいのは、tblUserBusiness.BUID が渡された値と等しいか、Users.IsSysAdmin が True であるすべてのユーザーを選択することです。Users.IsSysAdmin が True の場合、関連する tblUserBusiness レコードがないため、左外部結合になります。
以下の 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)