miércoles, 17 de septiembre de 2014

Como hacer una comparacion en C# para evaluar si una variable esta contenida en un array al estilo del 'IN' de sql usando 'Contains', 'Equals', etc

Una manera de ver si una variable esta contenida dentro de un array es usando el metodo de extension "Any", el cual pasandole una variable al que se le aplica un método "Equals", lo compara contra todos los valores de dicho array.

Ejemplo de como se puede utilizar para ver si un elemento se encuentra en un string separado por comas:

"miPalabra1,miPalabra2,miPalabra3".ToLower().Split(',').Any("miPalabraX".Equals))

Tambien (por ejemplo) puede aplicarse a integers del siguiente modo:

var variableInteger = 999;
var existe = new []{1,2,3,999,n}.Any(variableInteger.Equals); // devuelve True pues 999 esta en el array

Es una buena manera de no tener que andar usando muchos 'ORs' ( || ) o "ANDs" ( && ) para comparar si un valor esta dentro cierto rango.


hay otras formas de hacer lo mismo (ver http://stackoverflow.com/questions/2579421/comparing-one-value-to-a-whole-array-c  como ejemplo.

Es interesante tambien que puede usarse no solo para buscar una igualdad, sino que tambien en caso como los strings si en vez de Equals se le pasa Contains se pueden realizar otras comparaciones.