通过 Linq 查询用户和角色(ASP.NET 身份)
Query users & roles (ASP.NET identity) via Linq
我想从数据库中获取病人和医生。我正在使用 ASP.NET 身份。
相关表格是AspNetUsers
、AspNetRoles
和AspNetUserRoles
这是我的查询:
var result = from pateints in context.Users
let pEmail = pateints.Email
from doctors in context.Users
from roles in context.Roles
where pateints.Roles.Any(r => r.RoleId == roles.Id && roles.Name == "Patient")
where doctors.Roles.Any(r => r.RoleId == roles.Id && roles.Name == "Doctor")
select new { doctors.Email, pEmail };
我尽力找到了问题,但是这个查询returns什么都没有。
您只需加入所有三个实体,然后对角色名称应用过滤器,如下所示 -
var result = from u in context.Users
join ur context.UserRoles on u.Userid equal ur.Userid
join r in context.Roles on r.Roleid equal ur.Roleid
where r.Name == "Doctor" || r.Name == "Patient"
select new {UserName = u.UserName, Email = u.Email, Role = r.Name };
示例输出将如下所示 -
UserName Email Role
abc xyz abc@abc.com Doctor
doc xyz doc@abc.com Doctor
pqr xyz pqr@abc.com Patient
lmn xyz lmn@abc.com Patient
试试这个
using(ApplicationDbContext db=new ApplicationDbContext())
{
var users = (from user in db.Users
from roles in user.Roles
join role in db.Roles
on roles.RoleId equals role.Id
select new
{
user.UserName,
role.Name
}).ToList();
}
我想从数据库中获取病人和医生。我正在使用 ASP.NET 身份。
相关表格是AspNetUsers
、AspNetRoles
和AspNetUserRoles
这是我的查询:
var result = from pateints in context.Users
let pEmail = pateints.Email
from doctors in context.Users
from roles in context.Roles
where pateints.Roles.Any(r => r.RoleId == roles.Id && roles.Name == "Patient")
where doctors.Roles.Any(r => r.RoleId == roles.Id && roles.Name == "Doctor")
select new { doctors.Email, pEmail };
我尽力找到了问题,但是这个查询returns什么都没有。
您只需加入所有三个实体,然后对角色名称应用过滤器,如下所示 -
var result = from u in context.Users
join ur context.UserRoles on u.Userid equal ur.Userid
join r in context.Roles on r.Roleid equal ur.Roleid
where r.Name == "Doctor" || r.Name == "Patient"
select new {UserName = u.UserName, Email = u.Email, Role = r.Name };
示例输出将如下所示 -
UserName Email Role
abc xyz abc@abc.com Doctor
doc xyz doc@abc.com Doctor
pqr xyz pqr@abc.com Patient
lmn xyz lmn@abc.com Patient
试试这个
using(ApplicationDbContext db=new ApplicationDbContext())
{
var users = (from user in db.Users
from roles in user.Roles
join role in db.Roles
on roles.RoleId equals role.Id
select new
{
user.UserName,
role.Name
}).ToList();
}