هل يمكن لـ LINQ (إلى SQL) إجراء استعلامات ثنائية؟

StackOverflow https://stackoverflow.com/questions/130605

  •  02-07-2019
  •  | 
  •  

سؤال

لدي جدول للمستخدمين يتضمن قناعًا صغيرًا للأدوار التي ينتمي إليها المستخدم.أرغب في تحديد المستخدمين الذين ينتمون إلى واحد أو أكثر من الأدوار في قيمة قناع نقطي.على سبيل المثال:

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

يؤدي هذا إلى تحديد كافة المستخدمين الذين لديهم الأدوار "2" أو "4" أو "16" في قناعهم النقطي.هل من الممكن التعبير عن ذلك في استعلام LINQ؟شكرًا.

هل كانت مفيدة؟

المحلول

أعتقد أن هذا سينجح، لكنني لم أختبره. استبدل اسم كائن DataContext الخاص بك.YMMV.

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

نصائح أخرى

كملاحظة جانبية لزملائي من مستخدمي Google: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