在where-Linq查询中选择
我有两个表在where-Linq查询中选择,linq,Linq,我有两个表tbl\u角色\u主机和tbl\u用户\u主机 tbl\u role\u master具有以下值 role_id role rolevalue 1 admin 1 2 gen 2 3 test1 4 4 test2 8 5 test3 16 user_id user_name rolevlue_consolidated 1 use
tbl\u角色\u主机
和tbl\u用户\u主机
tbl\u role\u master
具有以下值
role_id role rolevalue
1 admin 1
2 gen 2
3 test1 4
4 test2 8
5 test3 16
user_id user_name rolevlue_consolidated
1 user1 15
2 user2 3
3 user3 7
rolevalue
包含Fibonacci系列。。
tbl\u user\u master
包含以下值
role_id role rolevalue
1 admin 1
2 gen 2
3 test1 4
4 test2 8
5 test3 16
user_id user_name rolevlue_consolidated
1 user1 15
2 user2 3
3 user3 7
rolevlue\u consolidated
包含在tbl\u role\u master
表中添加的rolevlue
组合
例如:user1的15具有admin、gen、test1和test2的角色
现在我需要一个linq查询,根据tbl\u user\u master
对于ex if i passsuser_id
2,select查询应返回
admin
gen
我有sql查询-
select
role
from
tbl_rol_master
WHERE (
select
rolevalue_consolidated
from
tbl_user_master
where
User_Id=" + userId + "
)
假设您有两个列表,一个包含所有角色,另一个包含所有用户,您可以执行以下操作:
var userRoles = roles.Where(role => (role.RoleValue &
users.First(user => user.Id == YourUserId) == role.RoleValue);
它将返回一个列表,其中包含具有给定用户id的用户的所有分配权限。sql查询也无效:
。。。其中(选择…)
。您必须指定搜索条件。但是sql查询工作正常。可能您没有发布真正的查询。我假设您忘记在-子句中指定:WHERE SomeColumn IN(选择rolevalue_consolidated…
此查询实际上执行斐波那契级数逻辑。但我不知道如何在linq中实现。希望您理解..请帮助。。