Las expresiones lambda son una de las herramientas más potentes dentro del ecosistema de C# y LINQ (Language Integrated Query). Estas expresiones permiten definir funciones anónimas de una forma concisa y eficiente, facilitando la manipulación de colecciones y datos. En este artículo, exploraremos a fondo cómo funcionan, sus ventajas y su aplicación práctica en consultas LINQ.
¿Qué es una Expresión Lambda?
Una expresión lambda es una función anónima que se utiliza principalmente para definir delegados o funciones dentro de LINQ. Se caracteriza por la sintaxis:
(parametros) => expresión_o_bloque_de_código;
Por ejemplo, una expresión lambda que suma dos números:
Func<int, int, int> suma = (a, b) => a + b;
Console.WriteLine(suma(3, 5)); // Salida: 8
El operador => se lee como «va a» y divide los parámetros de la función de su cuerpo.
Ventajas de Usar Expresiones Lambda
- Sintaxis Concisa: Reduce la cantidad de código necesario para definir funciones.
- Mejor Legibilidad: Hace que las consultas LINQ sean más intuitivas.
- Uso con Delegados y Func: Se integran fácilmente con
Func<T>yAction<T>. - Optimización del Rendimiento: LINQ y el compilador de C# optimizan su ejecución.
Uso de Expresiones Lambda en LINQ
Las expresiones lambda son clave en las consultas LINQ, permitiendo operar sobre colecciones con métodos como Where, Select, OrderBy, entre otros.
1. Filtrar Elementos con Where
List<int> numeros = new List<int> { 1, 2, 3, 4, 5, 6 };
var numerosPares = numeros.Where(n => n
Console.WriteLine(string.Join(", ", numerosPares)); // Salida: 2, 4, 6
2. Transformar Datos con Select
List<string> nombres = new List<string> { "Ana", "Bruno", "Carlos" };
var nombresMayusculas = nombres.Select(n => n.ToUpper()).ToList();
Console.WriteLine(string.Join(", ", nombresMayusculas)); // ANA, BRUNO, CARLOS
3. Ordenar con OrderBy y OrderByDescending
List<int> valores = new List<int> { 5, 1, 4, 3, 2 };
var valoresOrdenados = valores.OrderBy(v => v).ToList();
var valoresDescendentes = valores.OrderByDescending(v => v).ToList();
Console.WriteLine(string.Join(", ", valoresOrdenados)); // 1, 2, 3, 4, 5
Console.WriteLine(string.Join(", ", valoresDescendentes)); // 5, 4, 3, 2, 1
4. Buscar Elementos con First y FirstOrDefault
List<int> lista = new List<int> { 3, 7, 10, 15 };
var primerMayorA5 = lista.First(n => n > 5);
Console.WriteLine(primerMayorA5); // 7
5. Agrupar Datos con GroupBy
var personas = new List<Persona>
{
new Persona { Nombre = "Ana", Ciudad = "Madrid" },
new Persona { Nombre = "Bruno", Ciudad = "Madrid" },
new Persona { Nombre = "Carlos", Ciudad = "Barcelona" }
};
var grupos = personas.GroupBy(p => p.Ciudad);
foreach (var grupo in grupos)
{
Console.WriteLine($"Ciudad: {grupo.Key}");
foreach (var persona in grupo)
{
Console.WriteLine($" - {persona.Nombre}");
}
}
6. Calcular Promedios y Sumas con Aggregate y Average
List<int> edades = new List<int> { 20, 25, 30, 35, 40 };
double promedio = edades.Average();
int suma = edades.Sum();
Console.WriteLine($"Edad Promedio: {promedio}"); // 30
Console.WriteLine($"Suma Total: {suma}"); // 150
Conclusión
Las expresiones lambda son una herramienta clave en C# y LINQ para simplificar consultas y manipular datos de forma eficiente. Gracias a su sintaxis compacta y potente, podemos realizar operaciones complejas con pocas líneas de código.
Si quieres seguir aprendiendo sobre LINQ y expresiones lambda, suscríbete a mi blog donde comparto contenido detallado sobre programación en C#.

