Expresiones lambda
Dado que hoy en día lo que se estila es el uso de las expresiones lambda, voy a intentar resumir en un solo post qué son y cómo se utilizan. Sobre todo voy a procurar simplificarlo lo más posible :)
Las expresiones lambda se utilizan para crear funciones anónimas las cuales pueden ser asignadas a delegados o a árboles de expresión.
¿Por qué anónimas?
Porque no necesitamos asignarles un nombre para referirnos a ellas.
¿Qué es un delegado?
Es un objeto que hace referencia a uno o más métodos. Más información aquí.
¿Qué es un árbol de expresión?
Un árbol de expresión representa una estructura en forma de árbol de las expresiones lambda en memoria. Generalmente se potencia su uso en LINQ.
¿Cómo se utilizan?
Para saber cómo utilizar y/o leer una expresión lambda debemos tener en cuenta los siguientes puntos:
- Parte izquierda: Representa los parámetros que intervienen en la expresión.
- Parte central: Se trata del operador lambda, necesario en todas las expresiones de este tipo.
- Parte derecha: Se definen las acciones a realizar.

Puntos importantes:
- Las expresiones lambda no utiliza la instrucción return, excepto aquellas que utilicen un bloque encerrado entre llaves.
suma = (a, b) =>
{
return a + b;
};
- No es necesario especificar el tipo de los parámetros, ya que siempre van asociados a un delegado que ya contiene esta información.
delegate string Delegado(int edad);
[...]
Delegado edad = e => string.Format("Tu edad es {0}", e);
- Se pueden usar tanto por delegados creados por nosotros como por aquellos definidos por el framework.
<%= Html.TextBoxFor(m => m.Name) %>
LOS DELEGADOS GENÉRICOS: ACTION Y FUNC
Por otro lado, podemos utilizar los siguientes delegados genéricos en lugar de delegate. Con ellos conseguimos una sintaxis algo más refinada y simple.
Action se utiliza para aquellas expresiones lambda que no retornan ningún valor.
Action<string> saludo = s => Console.Write("Hola {0}!", s);
saludo("Gisela");
Func para aquellas expresiones que retornen un valor.
Func<int, int, int> suma = (a, b) => a + b;
int resultado = suma(3, 5);
Tanto en el caso de Func como en Action el número máximo de parámetros permitido es cuatro (Func figurará como cinco ya que el último es considerado el valor de retorno).
Espero que haya servido como una pequeña introducción al respecto ;)
¡Saludos!