2013-10-17 275 views
0

我有一些MySQL的值。 我想知道...我怎麼能做到以下幾點:C#&&,||運營商

if (Value.ToString() == "1" || Value.ToString() == "2" || Value.ToString() == "3" && SecondValue.ToString() == "5") 

值可以是:1「或」 2「或」 3 ...和二值「5」。意味着(三個「價值」之一)& & SecondValue。 還是沒有辦法做到這一點?我應該這樣做:

if (Value.ToString() == "1" && SecondValue.ToString() == "5" 
{ 
} 
if (Value.ToString() == "2" && SecondValue.ToString() == "5" 
{ 
} 
ect .... 

謝謝你的回答。

+0

如果你不需要,我會阻止多次調用一個方法。我在談論'ToString()',在這種情況下它可能是無害的,但是你寧願要將它緩存在另一個變量中。 – Silvermind

回答

8

您的代碼幾乎是正確的,但您需要在「或」條件周圍添加一個括號以對它們進行分組。

if ((Value.ToString() == "1" || Value.ToString() == "2" || Value.ToString() == "3") 
&& SecondValue.ToString() == "5") 
+0

謝謝,這是我一直在尋找的。 –

0
if 
(
    (
     Value.ToString() == "1" || 
     Value.ToString() == "2" || 
     Value.ToString() == "3" 
    ) && 
    SecondValue.ToString() == "5" 
) 
0

這裏是什麼樣子基本上是:

(Value == 1 && SecondValue == 5) || (Value == 2 && SecondValue == 5) || (Value == 3 && SecondValue == 5) 

現在& &運營商是非常喜歡的,因爲它是distributive乘法運算符。這意味着我們可以做到這一點:

(Value == 1 || Value == 2 || Value == 3) && SecondValue == 5 
2

我想你想出去,這是什麼:

if (new List<string>() { "1", "2", "3" }.Contains(Value.ToString()) && SecondValue.ToString() == "5") 
+0

+1更多功能,但我會更改基本數組列表。我不需要12'卡車來運輸微波爐。 – Franck

0

試試這個,它是乾淨的enugh:

if (SecondValue.ToString() == "5") 
{ 
    if (Value.ToString() == "1" || Value.ToString() == "2" || Value.ToString() == "3") 
    { 
     //Do Stuff 
    } 
} 

問候, Krekkon

+0

謝謝大家:p第一個答案是我需要的。我一直在尋找 –

1

但是,您可以使用圓括號將您的布爾條件分組。如果你想要一個「這些案例中的一個是真實的,而且其他案例中的一個是真實的」的情況,則適當分組。在你的情況下,你最好使用一個集合來保存你的值爲「Value」的有效情況,如:

var myValue = Value.ToString(); 
var myValidCases = new [] {"1", "2", "3"}; 
if(myValidCases.Any(validCase => validCase == myValue) && SecondValue.ToString() == "5") 
{ 
    //do something 
}