5

ユーザーが属するロールのビットマスクを含むユーザーのテーブルがあります。ビットマスク値で 1 つ以上のロールに属するユーザーを選択したいと考えています。例えば:

選択する *
[ユーザー] から
ここで UserRolesBitmask | 22 = 22

これにより、ビットマスクにロール「2」、「4」、または「16」を持つすべてのユーザーが選択されます。これをLINQクエリで表現することは可能ですか? ありがとう。

4

3 に答える 3

13

ちなみに、私の仲間のgooglersの場合: UserRolesBitmask | 22 == 22他のフラグを持たないすべてのユーザーを選択します(フィルターではなく、言うようなもの1==1です)。

必要なのは次のいずれかです。

  • UserRolesBitmask & 22 == 22ビットマスクにすべての役割を持つユーザーを選択するか、次のようにします。
  • UserRolesBitmask & 22 != 0これは、ビットマスクに少なくとも1つの役割を持つユーザーを選択します
于 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 に答える