2012-10-26 2 views
1

N'existe-t-il pas d'opérande OR en C# pour les chaînes? Je regarde la page d'opérandes Microsoft C# - et rien sur n'importe quel type de OU pour les chaînes.OU Opérande en C# pour les chaînes

J'ai une instruction if je suis en train d'écrire:

if (Convert.ToString(r["first_name"]) != "Antoine" || "Brad" || "Programming" || "Admin" || "Patricia") 
            { 

qui C# est étouffait avec cette erreur:

CS0019: Operator '||' cannot be applied to operands of type 'bool' and 'string' 

Je suis habitué à Python et PHP, où faire quelque chose de similaire est autorisé.

Quelle est la syntaxe correcte pour C#?

+0

Peut-être http://stackoverflow.com/questions/4987873/how-to-find-if-a-string-contains-any-items-of-an-list-of-strings vous aidera – quip

+3

@AndrewAlexander Operators aren 't conçu pour les types, mais pour les expressions booléennes. –

+0

@ MatíasFidemraizer Eh bien, c'est vrai des opérateurs booléens de toute façon. – Servy

Répondre

7

Vous ne pouvez pas faire cela.

Au lieu de cela, vous pouvez écrire

if (someString != "a" && someString != "b" && ...) 
+2

'Vous ne pouvez pas faire cela.» - Oppressor! –

3
if ((r["first_name"]) != "Antoine" || (r["first_name"]) != "Brad" || (r["first_name"]) !="Programming" || (r["first_name"]) != "Admin" ||r(["first_name"]) != "Patricia") 
+0

Cela donnera un avertissement du compilateur. – SLaks

+0

@SLaks: pourquoi monsieur –

+0

Vous comparez 'object' à' string'; cela n'appellera pas le '==' surchargé. – SLaks

12

Vous pouvez faire une collection, puis l'emploi contient

if (!(new []{"Antoine", "Brad", "Programming", "Admin", "Patricia"}.Contains(Convert.ToString(r["first_name"]))) 
0

En C#, vous pouvez mettre ces chaînes dans un tableau et vérifier si contient le r ["first_name"]:

 var names = new[]{ "Antoine", "Brad", "Programming", "Admin", "Patricia" }; 

     if (names.Contains(Convert.ToString(r["first_name"]))) 
     { 
      //doSomething 
     } 
0

Je suggère est de mettre les chaînes que vous voulez dans un tableau et ensuite vérifier pour voir si le tableau contient le prénom.

Alors:

var names = new [] {"Antoine", "Brad", "Programming", "Admin", "Patricia"}; 

Puis:

var match = names.Contains(r["first_name"]); 
1

Quelque part dans le code, déclarez les valeurs que vous voulez vérifier contre.

var badNames = new HashSet<string> {"Antoine", "Brad", "Programming", "Admin", "Patricia"}; 

Ensuite, plus tard lorsque vous avez besoin de voir si cette chaîne est dans la collection.

if(!badNames.Contains(Convert.ToString(r["first_name"]))){ 
    return "Its all good."; 
} 

En prime le constructeur HashSet peut prendre un comparateur qui vous permettra de faire une comparaison insensible à la casse.