Frage

Ich habe eine Tabelle von Benutzern, die eine Bitmaske von Rollen enthalten, die der Benutzer gehört. Ich möchte Benutzer auswählen, die in einem Bitmaskenwert auf eine oder mehrere der Rollen gehören. Zum Beispiel:

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

Damit werden alle Benutzer, die die Rollen ‚2‘, ‚4‘ oder ‚16‘ in ihre bitmask haben. Ist dies möglich, dies in einer LINQ-Abfrage auszudrücken? Danke.

War es hilfreich?

Lösung

Ich denke, das wird funktionieren, aber ich habe it.Substitute den Namen Ihres Datacontext-Objekt nicht getestet. YMMV.

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

Andere Tipps

Als Randbemerkung obwohl für meine Kolleginnen und Googler: UserRolesBitmask | 22 == 22 wählt alle Benutzer, die haben keine andere Flaggen (seinen nicht einen Filter, der wie wenn man sagt 1==1).

Was Sie wollen, ist entweder:

  • UserRolesBitmask & 22 == 22 die Benutzer auswählt, die alle Rollen in ihren bitmask oder:
  • UserRolesBitmask & 22 != 0 die Benutzer, die mindestens eine der Rollen in ihrer bitmask
  • haben wählt

Wenn das nicht funktioniert, Sie immer ExecuteCommand verwenden:

DataContext.ExecuteCommand("select * from [User] where UserRolesBitmask | {0} = {0}", 22);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top