lambda表达式使用select和where子句连接多个表
我有三个表多对多关系我已加入三个表并选择我想要的值但现在我需要从查询结果中选择一行通过指定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 = mruUserName, 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
查询的结果,并将条件设置为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
查询结果相同的结果并感谢任何帮助
如果我理解你的问题,你需要做的就是添加.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 => mruUserId == 1) .Select (m => new AddUserToRole { UserName = mruUserName, RoleName = m.ro.RoleName });
希望有所帮助。
我正在寻找一些东西,我找到了这篇文章。 我发布了这个管理多对多关系的代码,以防有人需要它。
var UserInRole = db.UsersInRoles.Include(u => u.UserProfile).Include(u => u.Roles) .Select (m => new { UserName = u.UserProfile.UserName, RoleName = u.Roles.RoleName });
- 括号中带有(attribute)的方法参数
- ASP.Net WebApi:如何在运行时加载其他控制器
- 如何在ASP .NET MVC中将对象列表与用户(Account)关联
- 通过在浏览器中输入url来避免用户导航到视图
- 自定义字符串作为具有entity framework的主键
- 嵌入Power Bi Report Promise未定义为powerbi.js
- 如何将带有.MDF文件(Sql 2008)的现有ASP.NET MVC 3项目迁移到Windows Azure模拟器(使用SQL Azure)
- Windows 10更新后,MVC应用程序中断
- 发现多个类型与名为“Home”的控制器相匹配 – 在两个不同的区域中