выберите, где – Linq Query

Вопрос:

У меня есть две таблицы tbl_role_master и tbl_user_master.

tbl_role_master имеет следующие значения:

role_id   role    rolevalue
1         admin     1
2         gen       2
3         test1     4
4         test2     8
5         test3     16

rolevalue содержит fibonacciseries. tbl_user_master содержит значения ниже

user_id   user_name  rolevlue_consolidated
1         user1       15
2         user2        3
3         user3        7

rolevlue_consolidated содержит добавление комбинации rolevalue в таблице tbl_role_master для ex: user1 15 имеет роли admin, gen, test1 и test2

теперь мне нужен запрос linq для получения ролей от tbl_role_master на основе user_id в tbl_user_master

для ex, если я передаю user_id 2, запрос select должен возвратиться

admin
gen

У меня есть запрос sql –

select
role
from
tbl_rol_master
WHERE (
select
rolevalue_consolidated
from
tbl_user_master
where
User_Id=" + userId + "
)

Ответ №1

Предполагая, что у вас есть два списка: один со всеми ролями и один со всеми вашими пользователями, вы можете сделать что-то вроде этого:

var userRoles = roles.Where(role => (role.RoleValue &
users.First(user => user.Id == YourUserId) == role.RoleValue);

Что возвращает список со всеми назначенными правами пользователя с данным идентификатором пользователя.

Оцените статью
TechArks.Ru
Добавить комментарий