【发布时间】:2014-05-19 10:11:30
【问题描述】:
我有三个表的多对多关系我已经加入了三个表并选择了我想要的值但是现在我需要从查询结果中选择一行通过指定 id 这是我的三个表
这是使用LINQ lambda 表达式的查询:
DataBaseContext db = new DataBaseContext();
public ActionResult Index()
{
var UserInRole = db.UserProfiles.
Join(db.UsersInRoles, u => u.UserId, uir => uir.UserId,
(u, uir) => new { u, uir }).
Join(db.Roles, r => r.uir.RoleId, ro => ro.RoleId, (r, ro) => new { r, ro })
.Select(m => new AddUserToRole
{
UserName = m.r.u.UserName,
RoleName = m.ro.RoleName
});
return View(UserInRole.ToList());
}
使用sql查询的结果将是这样的
sql查询
select *
from UserProfile u join webpages_UsersInRoles uir on u.UserId = uir.UserId
join webpages_Roles r on uir.RoleId = r.RoleId
sql 查询的结果
现在我使用 anther sql 查询来过滤预览的结果 sql 查询 by where 并将条件设置为 where u.UserId = 1 以便只将 ID 为 1 的用户返回给我
select *
from UserProfile u join webpages_UsersInRoles uir on u.UserId = uir.UserId
join webpages_Roles r on uir.RoleId = r.RoleId
where u.UserId = 1
以及这个sql查询的结果
那么我如何将 where clause 添加到我的 lambda 表达式中,以得到与 sql 查询结果相同的结果,感谢您的帮助
【问题讨论】:
标签: c# asp.net-mvc linq entity-framework join