¿Qué son las expresiones Lambda?
Son funciones anónimas que se usan frecuentemente para crear delegates en LINQ. Son simples, sin ninguna declaraciones, es decir, sin modificadores de acceso, la declaración de valor de retorno y nombre.
Están en el lado derecho del operador =>. Una expresión lambda devuelve el resultado de la evaluación de la condición.
¿Por qué necesitamos expresiones lambda?
Más de uno se estará preguntando: ¿necesitamos un método sin un nombre? La respuesta es conveniencia.
Es una especie de taquigrafía que permite abreviar el método en el mismo lugar que se usará. Nos ahorra tiempo, espacio y además, es fácil de revisar el código. Simplemente cuando te acostumbres; tendrás los métodos más comunes a un punto y espacio de tu objeto.
¿Cómo definimos una expresión lambda?
La definición básica es: Parámetro => Código ejecutado
Veamos algunos ejemplos:
Un expresión bastante simple.
x => x == 5
Aquí podemos observar que al tener dos parámetros, necesitamos envolverlo en paréntesis separados por coma.
(x, y) => x == y
Aunque una de las feature que tenemos con los lambda expressions es el olvidarnos de los tipos, a veces, es difícil o imposible deducirlo por el mismo. Para ello, habrá que expresarlo de la siguiente manera:
(int x, string s) => s.Length > x
Para especificar cero parámetros de entrada, utilice paréntesis vacíos:
() => GeekyMethod()
Ejemplo un poco más complejos. El elemento devuelve todos los elementos de la matriz de números hasta encontrar un número cuyo valor sea menor que su posición.
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var firstSmallNumbers = numbers.TakeWhile((n, index) => n >= index);