Cómo buscar patrones de búsqueda o coincidencias en C# dentro de un bucle swith con C# 6.0 o anterior
El otro día explicaba en otra entrada titulada Cómo buscar patrones de búsqueda o coincidencias en C# dentro de un bucle swith cómo poder seleccionar una opción a partir de una condición concreta, todo ello utilizando C# como lenguaje.
En aquel ejemplo, enseñaba a utilizar switch statements with patterns que está presente a partir de C# 7.0.
Sin embargo, hay todavía desarrolladores de versiones anteriores del lenguaje que podrían estar interesados en utilizar esta posibilidad, sin embargo, ¿cómo poder hacerlo o cómo simular este comportamiento?. ¿Es posible?.
Efectivamente es posible, aunque dependerá del propósito a cumplir.
En el caso de cadenas de texto, es posible 100% como veremos a continuación.
En otros casos más rebuscados, igual no sería completamente posible.
Lo que voy a hacer en esta entrada es explicar a través de un workaround cómo podemos hacer lo mismo en el caso de cadenas de texto.
Para ello, bastaría apoyarnos en Linq con el fin de buscar la coincidencia con lo que buscamos.
El código de ejemplo que demostraría esto sería el que se indica a continuación:
var message = "My car is red"; var result = String.Empty; var keys = new List<string>() { "bike", "car" }; var textFound = keys.FirstOrDefault(text => message.Contains(text)); switch (textFound) { case "bike": result = "bike"; break; case "car": result = "car"; break; default: result = "default"; break; }
Cómo podemos ver, de esta forma podemos «simular» la característica directa que nos da el lenguaje C# en su versión 7.0 ó superior.
Happy Coding!