5

我有一个用户表,其中包含用户所属角色的位掩码。我想在位掩码值中选择属于一个或多个角色的用户。例如:

选择 *
来自 [用户]
其中 UserRolesBitmask | 22 = 22

这将选择在其位掩码中具有角色“2”、“4”或“16”的所有用户。这可以在 LINQ 查询中表达吗?谢谢。

4

3 回答 3

13

作为对我的谷歌同事的附注: UserRolesBitmask | 22 == 22选择没有任何其他标志的所有用户(它不是过滤器,就像说1==1)。

你想要的是:

  • UserRolesBitmask & 22 == 22它选择在其位掩码中具有所有角色的用户,或者:
  • UserRolesBitmask & 22 != 0它选择在其位掩码中至少具有一个角色的用户
于 2009-08-23T12:08:09.230 回答
8

我认为这会起作用,但我还没有测试过。替换您的 DataContext 对象的名称。YMMV。

from u in DataContext.Users
where UserRolesBitmask | 22 == 22
select u
于 2008-09-24T23:52:21.217 回答
0

如果这不起作用,您可以随时使用ExecuteCommand

DataContext.ExecuteCommand("select * from [User] where UserRolesBitmask | {0} = {0}", 22);
于 2008-09-25T00:03:43.767 回答