referencias posible operadores operador numeros numero mayor los intencionada elementos comparar comparacion como asignacion arreglo c# if-statement collections

posible - operadores de asignacion en c#



¿Cómo puedo comparar múltiples variables en una sola condición? (7)

Tengo esto:

if (input.Text.ToUpper() == "STOP")

Pero hay tantos valores posibles que no podría especificarlos por separado de esta manera:

if (input.Text.ToUpper() == "STOP" || input.Text.ToUpper() == "END")

¿Hay alguna manera de que puedas hacer algo como esto?

if (input.Text.ToUpper() == "STOP", "END", "NO", "YES")

¿Entonces, usar STOP, END, NO o YES hará la tarea?

El uso de cualquier contenido no funcionará, otras veces las palabras aceptadas tendrán la palabra STOP y END en ellas.


Puede mantener una matriz de las palabras posibles y hacerla coincidir con el método Contains :

string[] validInput = new string[] { "STOP", "END", "NO", "YES" }; // input is the input you have if (validInput.Contains(input.Text.ToUpper())) { // Do something }



Puedes usar LINQ para hacer esto. De esta forma, si tiene STOP y END en su cadena, se ajustará a ambos:

var myStringArray= new[]{ "STOP", "END", "NO", "YES" }; var query = myString.Any(x => myStringArray.Contains(x));


Situación perfecta para una extensión de cuerda

Agregar esto a un nuevo archivo

namespace appUtils { public static class StringExtensions { public static bool In(this string s, params string[] values) { return values.Any(x => x.Equals(s)); } } }

y llame desde su código de esta manera

if(input.Text.In("STOP", "END", "NO", "YES") == true) // ... do your stuff


crear extensión:

public static class Extension { public static bool EqualsAny(this string item, params string[] array) { return array.Any(s => item.ToUpper() == s.ToUpper()); } }

utilizando:

if (inputText.EqualsAny("STOP", "END", "NO", "YES"))


tu puedes hacer...

if(new[]{ "STOP", "END", "NO", "YES" }.Contains(input.Text.ToUpper()))


var tasks = new List<string> { "STOP", "END", "NO", "YES" }; tasks.Contains(input.Text.ToUpper());

Se ve mejor

var tasks = new List<string> { "stop", "end", "no", "yes" }; tasks.Exists(x => string.Equals(x, input.Text, StringComparison.OrdinalIgnoreCase));