Asp.net mvc 如何在Linq To SQL中编写此SQL查询?
我是MVC新手,它进展顺利,但在背对背的SQL等方面有点困难Asp.net mvc 如何在Linq To SQL中编写此SQL查询?,asp.net-mvc,linq-to-sql,Asp.net Mvc,Linq To Sql,我是MVC新手,它进展顺利,但在背对背的SQL等方面有点困难 select * from aspnet_Users where Active = 1 and UserId in (select UserId from aspnet_UsersInRoles,aspnet_Roles where aspnet_Roles.RoleId = aspnet_UsersInRoles.RoleId and aspnet_Roles.RoleName = 'Auth Level 1') 表和字段包括:
select * from aspnet_Users
where Active = 1 and UserId in (select UserId from aspnet_UsersInRoles,aspnet_Roles where aspnet_Roles.RoleId = aspnet_UsersInRoles.RoleId and aspnet_Roles.RoleName = 'Auth Level 1')
表和字段包括:
aspnet_Users (UserId int, Active bit, eMail varchar)
aspnet_UsersInRoles (UserId, RoleId)
aspnet_Roles (RoleId int, RoleName varchar)
到目前为止,我的尝试(但尚未完成)如下所示:
LmsDataContext db = new LmsDataContext();
var AuthUsers = from aspnet_User in db.aspnet_Users
join userinroles in db.aspnet_UsersInRoles on aspnet_User.UserId equals userinroles.UserId
where aspnet_User.Active
select aspnet_User;
多谢提前假设您在数据库(或设计器)中定义了关联,您应该能够通过属性访问相关实体,而无需诉诸显式联接。下面的示例未经测试,但应该会让您走上正确的道路。其基本思想是查找是否存在关联角色具有正确名称的关联,并在找到任何关联时选择用户
var users = db.aspnet_Users
.Where( u => u.Active )
.Any( u => u.aspnet_UsersInRoles
.Any( r => r.aspnet_Roles.RoleName == "Auth Level 1" ) );
假设您在数据库(或设计器)中定义了关联,则应该能够通过属性访问相关实体,而无需诉诸显式联接。下面的示例未经测试,但应该会让您走上正确的道路。其基本思想是查找是否存在关联角色具有正确名称的关联,并在找到任何关联时选择用户
var users = db.aspnet_Users
.Where( u => u.Active )
.Any( u => u.aspnet_UsersInRoles
.Any( r => r.aspnet_Roles.RoleName == "Auth Level 1" ) );
谢谢tvanfossen的及时回复,我尝试了你的方法,但没有成功。我认为你的方法更简洁,但我做到了以下几点:
// Loop through all the Users on the System who are in Auth Level 1 Role and Email them
LmsDataContext db = new LmsDataContext();
var AuthUsers = from aspnet_User in db.aspnet_Users
join userinroles in db.aspnet_UsersInRoles on aspnet_User.UserId equals userinroles.UserId
where aspnet_User.Active
&& userinroles.aspnet_Role.RoleName == "Auth Level 1"
select aspnet_User;
干杯
谢谢tvanfossen的及时回复,我试着实施你的方法,但没有成功。我认为你的方法更简洁,但我做到了以下几点:
// Loop through all the Users on the System who are in Auth Level 1 Role and Email them
LmsDataContext db = new LmsDataContext();
var AuthUsers = from aspnet_User in db.aspnet_Users
join userinroles in db.aspnet_UsersInRoles on aspnet_User.UserId equals userinroles.UserId
where aspnet_User.Active
&& userinroles.aspnet_Role.RoleName == "Auth Level 1"
select aspnet_User;
干杯
J