Pregunta

Tengo una tabla de usuarios que incluye una máscara de bits de roles a los que pertenece el usuario. Me gustaría seleccionar usuarios que pertenezcan a uno o más de los roles en un valor de máscara de bits. Por ejemplo:

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

Esto selecciona a todos los usuarios que tienen los roles '2', '4' o '16' en su máscara de bits. ¿Es posible expresar esto en una consulta LINQ? Gracias.

¿Fue útil?

Solución

Creo que esto funcionará, pero no lo he probado. Sustituya el nombre de su objeto DataContext. YMMV.

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

Otros consejos

Sin embargo, como nota al margen para mis compañeros de googlers: UserRolesBitmask | 22 == 22 selecciona todos los usuarios que no tienen ningún otro indicador (no es un filtro, es como decir 1 == 1 ).

Lo que quieres es:

  • UserRolesBitmask & amp; 22 == 22 que selecciona usuarios que tienen todos los roles en su máscara de bits o:
  • UserRolesBitmask & amp; 22! = 0 que selecciona usuarios que tienen al menos uno de los roles en su máscara de bits

Si eso no funciona, siempre puede usar ExecuteCommand :

DataContext.ExecuteCommand("select * from [User] where UserRolesBitmask | {0} = {0}", 22);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top