Запрос пользователей и ролей (удостоверение ASP.NET) через Linq - PullRequest
0 голосов
/ 17 октября 2018

Я хочу получить пациентов и врачей из базы данных.Я использую ASP.NET Identity.

Соответствующие таблицы: 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 };

Я старался изо всех сил, чтобы найти проблему, но этот запрос ничего не возвращает.

1 Ответ

0 голосов
/ 17 октября 2018

Вам просто нужно присоединиться ко всем трем объектам, а затем применить фильтр к имени роли, как показано ниже -

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
...