2008-09-24 52 views
4

我有一个包含用户所属角色的位掩码的用户表。我想选择属于位掩码值中的一个或多个角色的用户。例如:LINQ(对SQL)可以执行按位查询吗?

select * 
from [User] 
where UserRolesBitmask | 22 = 22

这会选择在位掩码中角色为'2','4'或'16'的所有用户。这有可能在LINQ查询中表达这一点吗?谢谢。

回答

8

我认为这会起作用,但我没有测试过它。替换DataContext对象的名称。因人而异。

from u in DataContext.Users 
where UserRolesBitmask | 22 == 22 
select u 
+0

谢谢,我以为我试过 - 必须一直迟到... :) – Nick 2008-09-25 06:55:26

0

如果不工作,你总是可以使用ExecuteCommand

DataContext.ExecuteCommand("select * from [User] where UserRolesBitmask | {0} = {0}", 22); 
12

作为一个侧面说明,虽然对于我的同胞的Google: UserRolesBitmask | 22 == 22选择没有任何其他标志的所有用户(它不是一个过滤器,它像是说1==1)。

你想要的是两种:

  • UserRolesBitmask & 22 == 22该选择哪个都在其位掩码或角色的用户:
  • UserRolesBitmask & 22 != 0其中中选择具有角色的至少一个在其位掩码用户