将SQL Bitwise运算符转换为C#Bitwise运算符的示例

时间:2016-03-17 16:42:00

标签: c# .net sql-server

下面的SQL语句在使用时会返回多行。

现在,我怎样才能在C#而不是数据库中使用按位计算?我正在构建C#版本,而不必过多依赖数据库使用。

C#位运算符的工作原理是什么?

SELECT CustomerMsg 
    CustomerMsg 
FROM BookItOut_DataReloading_DealerSalesErrorCode 
WHERE ((BitwiseErrorCode & '17314086912') = BitwiseErrorCode) 

2 个答案:

答案 0 :(得分:1)

在C#中,按位运算符的工作方式与它们在SQL中的工作方式相同。使用LINQ,您可以执行以下操作:

// note that 17314086912 does not fit to int
BookItOut_DataReloading_DealerSalesErrorCode
   .Where(x => (x.BitwiseErrorCode & 17314086912) == x.BitwiseErrorCode)
   .Select(x => x.CustomerMsg);

来自& Operator (C# Reference)

  

Binary&运算符是为整数类型和bool预定义的。对于整体类型,&计算其操作数的逻辑按位AND。对于bool操作数,&计算其操作数的逻辑AND;也就是说,当且仅当两个操作数都为真时,结果才为真。

示例:

int a = 3;
int b = 6;
int c = a & b; // c will be set to 2

答案 1 :(得分:0)

您可以在整数类型中使用相同的运算符。

var mask = 2 << 3;
var value = 16;
Console.WriteLine((value & mask) == mask); //true

按位运算符可与标有FlagsAttribute

的枚举类型一起使用
[Flags]
enum MyEnum
{
    A = 1 << 0,   //1
    B = 1 << 1,   //2
    C = 1 << 2,   //4
    D = 1 << 3,   //8
    E = A | B | C //7
}

请参阅MSDN Docs