如何扩展加入不同 id 的 3 个表
How to extensions join 3 tables on different id
SQL 内连接查询:
Select
r.RoleName
From
webpages_Roles r
Inner Join
webpages_GroupInRoles gr ON r.RoleID = gr.RoleId
Inner Join
webpages_UsersInGroup ug ON gr.GroupID = ug.GroupID
Where
ug.UserID = 1
我正在尝试将此 SQL 转换为使用 EF 的扩展连接 3 个表:
var q1 = db.webpages_Roles
.Join(db.webpages_GroupInRoles,
r => r.RoleId,
gr => gr.RoleID,
(r, gr) => r)
.Join(db.webpages_UsersInGroup,
ug => ug.GroupID,
gr=>gr.GroupID,
(ug, gr) => ug);
翻译 sql 查询的一种简单方法是使用 LINQ query syntax:
var query= from r in db.webpages_Roles
join gr in db.webpages_GroupInRoles on r.RoleID equals gr.RoleId
join ug in db.webpages_UsersInGroup on gr.GroupID equals ug.GroupID
where ug.UserID == 1
select r.RoleName;
更简单易读
您几乎 there.Try 在执行连接之前使用 Where
扩展方法过滤 webpages_UsersInGroup
集合。
var q1 = db.webpages_Roles
.Join(
db.webpages_GroupInRoles,
r => r.RoleId,
gr => gr.RoleID,
(r, gr) => r)
.Join(
db.webpages_UsersInGroup.Where(x=>x.UserId==1),
ug => ug.GroupID,
gr=>gr.GroupID,
(ug, gr) => ug);
SQL 内连接查询:
Select
r.RoleName
From
webpages_Roles r
Inner Join
webpages_GroupInRoles gr ON r.RoleID = gr.RoleId
Inner Join
webpages_UsersInGroup ug ON gr.GroupID = ug.GroupID
Where
ug.UserID = 1
我正在尝试将此 SQL 转换为使用 EF 的扩展连接 3 个表:
var q1 = db.webpages_Roles
.Join(db.webpages_GroupInRoles,
r => r.RoleId,
gr => gr.RoleID,
(r, gr) => r)
.Join(db.webpages_UsersInGroup,
ug => ug.GroupID,
gr=>gr.GroupID,
(ug, gr) => ug);
翻译 sql 查询的一种简单方法是使用 LINQ query syntax:
var query= from r in db.webpages_Roles
join gr in db.webpages_GroupInRoles on r.RoleID equals gr.RoleId
join ug in db.webpages_UsersInGroup on gr.GroupID equals ug.GroupID
where ug.UserID == 1
select r.RoleName;
更简单易读
您几乎 there.Try 在执行连接之前使用 Where
扩展方法过滤 webpages_UsersInGroup
集合。
var q1 = db.webpages_Roles
.Join(
db.webpages_GroupInRoles,
r => r.RoleId,
gr => gr.RoleID,
(r, gr) => r)
.Join(
db.webpages_UsersInGroup.Where(x=>x.UserId==1),
ug => ug.GroupID,
gr=>gr.GroupID,
(ug, gr) => ug);