He estado discutiendo esto con colegas, y no pudimos averiguar cuál es el uso de .Any
un determinado List<>
, en C #.
Puede verificar la validez de un elemento en la matriz como la siguiente declaración:
if (MyList.Any()){ ...} //Returns true or false
Que es exactamente lo mismo que
if (MyList.Count() != 0) { ... }
y es mucho más común, legible y claro sobre la intención de la if
declaración.
Al final, nos quedamos atrapados con este pensamiento:
.Any()
puede usarse, funcionará igual de bien, pero es menos claro acerca de la intención del programador y, en ese caso, no debe usarse.
Pero sentimos que esto no puede ser correcto; Debemos estar perdiendo algo.
¿Estamos?
Any()
es menos clara: me Any()
parece más clara, especialmente con una condición lambda. Traducir el código al inglés en mi cabeza, se if(MyList.Count(o => o > 10) > 0)
convierte en "¿Es el número de elementos mayor que 10 más que 0?" mientras que se if(MyList.Any(o => o > 10))
convierte en "¿Hay algún elemento mayor que 10?"
Any
es Exists
. El nombre de Linq probablemente esté más inspirado en Haskell y Python, que también tienen alguna / todas las funciones.