【问题标题】:Can LINQ (to SQL) do bitwise queries?LINQ(to SQL)可以按位查询吗?
【发布时间】:2008-09-24 23:32:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# linq-to-sql bitmask


    【解决方案1】:

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

    你想要的是:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢,我想我已经试过了 - 一定是迟到了...... :)
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-09-21
        • 1970-01-01
        • 2010-11-15
        • 2010-12-17
        • 1970-01-01
        • 1970-01-01
        • 2011-08-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多