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
}
Puede usar una colección como matriz y Enumerable.Contains
. Enumerable.Contains
:
var words = new[]{ "STOP", "END", "NO", "YES" };
if(words.Contains(input.Text.ToUpper()))
{
// ...
}
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));