2008-09-24 49 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其中中選擇具有角色的至少一個在其位掩碼用戶