选择在哪里 - Linq查询

时间:2014-07-22 07:24:30

标签: linq

我有两张表tbl_role_mastertbl_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_consolidatedrolevalue表格中添加了tbl_role_master的组合 例如:user1的15具有admin,gen,test1和test2

的角色

现在我想要一个linq查询来根据tbl_user_master

中的user_id从tbl_role_master获取角色

对于ex,如果我传递user_id 2,则选择查询应该返回

admin
gen

我有SQL查询 -

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

1 个答案:

答案 0 :(得分:0)

假设您有两个列表,一个包含所有角色,另一个包含所有用户,您可以执行以下操作:

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

返回一个列表,其中包含具有给定用户ID的用户的所有已分配权限。