下面的SQL语句在使用时会返回多行。
现在,我怎样才能在C#而不是数据库中使用按位计算?我正在构建C#版本,而不必过多依赖数据库使用。
C#位运算符的工作原理是什么?
SELECT CustomerMsg
CustomerMsg
FROM BookItOut_DataReloading_DealerSalesErrorCode
WHERE ((BitwiseErrorCode & '17314086912') = BitwiseErrorCode)
答案 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);
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