2013-10-17 216 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 
}