Domanda

Ho una tabella di utenti che include una maschera di bit di ruoli a cui l'utente appartiene. Vorrei selezionare gli utenti che appartengono a uno o più ruoli in un valore maschera di bit. Ad esempio:

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

Seleziona tutti gli utenti che hanno i ruoli '2', '4' o '16' nella loro maschera di bit. È possibile esprimerlo in una query LINQ? Grazie.

È stato utile?

Soluzione

Penso che funzionerà, ma non l'ho provato. Sostituisci il nome del tuo oggetto DataContext. YMMV.

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

Altri suggerimenti

Come nota a margine, però, per i miei compagni googler: UserRolesBitmask | 22 == 22 seleziona tutti gli utenti che non hanno altri flag (non è un filtro, è come dire 1 == 1 ).

Quello che vuoi è:

  • UserRolesBitmask & amp; 22 == 22 che seleziona gli utenti che hanno tutti i ruoli nella loro maschera di bit o:
  • UserRolesBitmask & amp; 22! = 0 che seleziona gli utenti che hanno almeno uno dei ruoli nella loro maschera di bit

Se non funziona, puoi sempre usare ExecuteCommand :

DataContext.ExecuteCommand("select * from [User] where UserRolesBitmask | {0} = {0}", 22);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top