문제

사용자가 속한 역할의 비트 마스크를 포함하는 사용자 테이블이 있습니다. 비트 마스크 값으로 하나 이상의 역할에 속하는 사용자를 선택하고 싶습니다. 예를 들어:

select *
from   [User]
where  UserRolesBitmask | 22 = 22

이것은 비트 마스크에서 '2', '4'또는 '16'역할을 가진 모든 사용자를 선택합니다. LINQ 쿼리로 이것을 표현할 수 있습니까? 감사.

도움이 되었습니까?

해결책

나는 이것이 효과가있을 것이라고 생각하지만, 나는 그것을 테스트하지 않았다. 당신의 datacontext 객체의 이름을 결정했다. ymmv.

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

다른 팁

동료 Googlers에게는 부수적으로 :UserRolesBitmask | 22 == 22 다른 플래그가없는 모든 사용자를 선택합니다 (필터가 아닙니다. 1==1).

당신이 원하는 것은 다음과 같습니다.

  • UserRolesBitmask & 22 == 22 비트 마스크에 모든 역할을 가진 사용자를 선택하거나 다음과 같습니다.
  • UserRolesBitmask & 22 != 0 비트 마스크에서 역할 중 하나 이상이있는 사용자를 선택합니다.

그래도 작동하지 않으면 항상 사용할 수 있습니다 ExecuteCommand:

DataContext.ExecuteCommand("select * from [User] where UserRolesBitmask | {0} = {0}", 22);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top