Question

J'ai un tableau d'utilisateurs qui inclut un masque de bits des rôles auxquels l'utilisateur appartient. J'aimerais sélectionner des utilisateurs appartenant à un ou plusieurs des rôles dans une valeur de masque de bits. Par exemple:

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

Ceci sélectionne tous les utilisateurs ayant les rôles "2", "4" ou "16" dans leur masque de bits. Est-ce possible d'exprimer cela dans une requête LINQ? Merci.

Était-ce utile?

La solution

Je pense que cela fonctionnera, mais je ne l’ai pas testé. Remplacez le nom de votre objet DataContext. YMMV.

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

Autres conseils

Comme note pour les autres googleurs: UserRolesBitmask | 22 == 22 sélectionne tous les utilisateurs qui n'ont pas d'autres indicateurs (ce n'est pas un filtre, c'est comme si on disait 1 == 1 ).

Ce que vous voulez, c'est soit:

  • UserRolesBitmask & amp; 22 == 22 qui sélectionne les utilisateurs qui ont tous les rôles dans leur masque de bits ou:
  • UserRolesBitmask & amp; 22! = 0 qui sélectionne les utilisateurs qui ont au moins un des rôles dans leur masque de bits

Si cela ne fonctionne pas, vous pouvez toujours utiliser ExecuteCommand :

DataContext.ExecuteCommand("select * from [User] where UserRolesBitmask | {0} = {0}", 22);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top