我有一个用户表,其中包含用户所属角色的位掩码.我想在位掩码值中选择属于一个或多个角色的用户.例如:
select * from [User] where UserRolesBitmask | 22 = 22
这将选择在其位掩码中具有角色"2","4"或"16"的所有用户.这可以在LINQ查询中表达吗?谢谢.
作为我的同事googlers的旁注:
UserRolesBitmask | 22 == 22
选择所有没有任何其他标志的用户(它不是过滤器,就像说的那样1==1
).
你想要的是:
UserRolesBitmask & 22 == 22
选择在其位掩码中具有所有角色的用户或:
UserRolesBitmask & 22 != 0
选择在其位掩码中至少具有一个角色的用户
我认为这将有效,但我还没有测试过它.替换了你的DataContext对象的名称.因人而异.
from u in DataContext.Users where UserRolesBitmask | 22 == 22 select u