我有一个包含用户所属角色的位掩码的用户表。我想选择属于位掩码值中的一个或多个角色的用户。例如:LINQ(对SQL)可以执行按位查询吗?
select * from [User] where UserRolesBitmask | 22 = 22
这会选择在位掩码中角色为'2','4'或'16'的所有用户。这有可能在LINQ查询中表达这一点吗?谢谢。
我有一个包含用户所属角色的位掩码的用户表。我想选择属于位掩码值中的一个或多个角色的用户。例如:LINQ(对SQL)可以执行按位查询吗?
select * from [User] where UserRolesBitmask | 22 = 22
这会选择在位掩码中角色为'2','4'或'16'的所有用户。这有可能在LINQ查询中表达这一点吗?谢谢。
我认为这会起作用,但我没有测试过它。替换DataContext对象的名称。因人而异。
from u in DataContext.Users
where UserRolesBitmask | 22 == 22
select u
如果不工作,你总是可以使用ExecuteCommand
:
DataContext.ExecuteCommand("select * from [User] where UserRolesBitmask | {0} = {0}", 22);
作为一个侧面说明,虽然对于我的同胞的Google: UserRolesBitmask | 22 == 22
选择没有任何其他标志的所有用户(它不是一个过滤器,它像是说1==1
)。
你想要的是两种:
UserRolesBitmask & 22 == 22
该选择哪个都在其位掩码或角色的用户:UserRolesBitmask & 22 != 0
其中中选择具有角色的至少一个在其位掩码用户
谢谢,我以为我试过 - 必须一直迟到... :) – Nick 2008-09-25 06:55:26