2016-03-17 108 views
0

下面的SQL語句在使用時返回多行。將SQL位運算符轉換爲C#的示例按位運算符

現在,我該如何在C#中使用按位計算而不是數據庫?我正在構建C#版本,而不必過度依賴數據庫。

C#按位運算符的工作原理是什麼?

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

回答

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)

二進制&運營商被預設爲整型和布爾。對於整數類型,&計算其操作數的邏輯按位與。對於bool操作數,&計算其操作數的邏輯與;也就是說,當且僅當它的兩個操作數都爲真時,結果才爲真。

例子:

int a = 3; 
int b = 6; 
int c = a & b; // c will be set to 2 
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

+1

注意,在'Console.WriteLine(值&掩模==掩模)'運算符'= ='會在'&'之前。 –