Fad*_*adi 22 c# linq asp.net-mvc entity-framework join
我有三个表多对多关系我已加入三个表并选择我想要的值但现在我需要从查询结果中选择一行通过指定id这是我的三个表
这是使用LINQlambda表达式的查询:
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());
}
Run Code Online (Sandbox Code Playgroud)
结果就像使用sql查询一样
sql 询问
select *
from UserProfile u join webpages_UsersInRoles uir on u.UserId = uir.UserId
join webpages_Roles r on uir.RoleId = r.RoleId
Run Code Online (Sandbox Code Playgroud)
sql查询结果

现在我使用anther sql查询来过滤预览sql查询的结果,并将条件设置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
Run Code Online (Sandbox Code Playgroud)
以及此sql查询的结果

那么我怎么能添加clause我的lambda表达式的位置给我与sql查询结果相同的结果,并感谢任何帮助
Rad*_*cal 31
如果我理解你的问题,你需要做的就是添加.Where(m => mruUserId == 1):
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 })
.Where(m => m.r.u.UserId == 1)
.Select (m => new AddUserToRole
{
UserName = m.r.u.UserName,
RoleName = m.ro.RoleName
});
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
114761 次 |
| 最近记录: |