LINQ(对SQL)可以执行按位查询吗?
时间:2020-03-06 14:41:45 来源:igfitidea点击:
我有一张Users表,其中包含该用户所属角色的位掩码。我想选择一个位掩码值中属于一个或者多个角色的用户。例如:
select * from [User] where UserRolesBitmask | 22 = 22
这将选择在其位掩码中具有角色" 2"," 4"或者" 16"的所有用户。是否可以在LINQ查询中表达这一点?谢谢。
解决方案
我认为这可以用,但是我还没有测试过。用DataContext对象的名称代替。 YMMV。
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",用于选择在其位掩码中具有至少一个角色的用户

