Ejercicios Avanzados de Expresiones Lambda y LINQ en C#

Las expresiones lambda y LINQ en C# permiten realizar operaciones avanzadas sobre colecciones de datos de manera eficiente. A continuación, se presentan ejercicios más complejos para desarrollar un dominio más profundo sobre su uso.


Ejercicio 1: Encontrar los 3 números más grandes

Instrucciones: Dada una lista de números, usa LINQ para encontrar los tres valores más altos.

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> numeros = new List<int> { 5, 12, 45, 32, 18, 29, 54, 3 };
        var top3 = numeros.OrderByDescending(n => n).Take(3).ToList();

        Console.WriteLine("Los 3 números más grandes son:");
        top3.ForEach(n => Console.Write(n + " "));
    }
}

Ejercicio 2: Agrupar palabras por longitud

Instrucciones: Dada una lista de palabras, agrúpalas por su número de caracteres.

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<string> palabras = new List<string> { "hola", "mundo", "LINQ", "expresión", "lambda", "csharp" };
        var grupos = palabras.GroupBy(p => p.Length);

        foreach (var grupo in grupos)
        {
            Console.WriteLine($"Longitud {grupo.Key}:");
            foreach (var palabra in grupo)
            {
                Console.WriteLine("  - " + palabra);
            }
        }
    }
}

Ejercicio 3: Obtener los productos con precio superior al promedio

Instrucciones: Dada una lista de productos, selecciona aquellos cuyo precio sea mayor que el precio promedio.

using System;
using System.Collections.Generic;
using System.Linq;

class Producto
{
    public string Nombre { get; set; }
    public double Precio { get; set; }
}

class Program
{
    static void Main()
    {
        List<Producto> productos = new List<Producto>
        {
            new Producto { Nombre = "Laptop", Precio = 1200 },
            new Producto { Nombre = "Teléfono", Precio = 800 },
            new Producto { Nombre = "Tablet", Precio = 500 },
            new Producto { Nombre = "Monitor", Precio = 300 }
        };

        double precioPromedio = productos.Average(p => p.Precio);
        var productosCaros = productos.Where(p => p.Precio > precioPromedio).ToList();

        Console.WriteLine("Productos con precio superior al promedio:");
        productosCaros.ForEach(p => Console.WriteLine($"{p.Nombre}: ${p.Precio}"));
    }
}

Ejercicio 4: Contar cuántas veces aparece cada palabra en una oración

Instrucciones: Dada una oración, cuenta la frecuencia de cada palabra.

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        string texto = "el sol brilla en el cielo y el mar refleja la luz del sol";
        var palabras = texto.Split(' ');

        var conteo = palabras.GroupBy(p => p).Select(g => new { Palabra = g.Key, Cantidad = g.Count() }).ToList();

        Console.WriteLine("Frecuencia de palabras:");
        conteo.ForEach(p => Console.WriteLine($"{p.Palabra}: {p.Cantidad}"));
    }
}

Ejercicio 5: Filtrar y ordenar una lista de empleados

Instrucciones: Dada una lista de empleados, filtra aquellos con salario superior a 2000 y ordénalos de mayor a menor.

using System;
using System.Collections.Generic;
using System.Linq;

class Empleado
{
    public string Nombre { get; set; }
    public double Salario { get; set; }
}

class Program
{
    static void Main()
    {
        List<Empleado> empleados = new List<Empleado>
        {
            new Empleado { Nombre = "Ana", Salario = 2500 },
            new Empleado { Nombre = "Carlos", Salario = 1800 },
            new Empleado { Nombre = "Bruno", Salario = 3000 },
            new Empleado { Nombre = "David", Salario = 2200 }
        };

        var empleadosFiltrados = empleados.Where(e => e.Salario > 2000).OrderByDescending(e => e.Salario).ToList();

        Console.WriteLine("Empleados con salario superior a 2000 ordenados de mayor a menor:");
        empleadosFiltrados.ForEach(e => Console.WriteLine($"{e.Nombre}: ${e.Salario}"));
    }
}

Conclusión

Estos ejercicios avanzados permiten explorar el verdadero potencial de las expresiones lambda y LINQ en C#. Desde ordenar datos hasta realizar cálculos complejos, estas herramientas proporcionan una forma elegante y eficiente de manipular colecciones.

¡Sigue practicando y aplicando estas técnicas en tus proyectos para mejorar tu dominio en LINQ!

macbook pro
Photo by Pixabay on Pexels.com
Tomas Gonzalez

Mi nombre es Tomás González, soy técnico informático, desarrollador web, y formador online. Estoy abierto a nuevas ideas o proyectos. Me puedes escribir a mi correo electrónico tomas.gonzalez@infogonzalez.com Puedes contratarme para clases particulares y proyectos en: Puedes ver mi perfil profesional en: Tomás González Mi Facebook es: Infogonzalez Puedes ver mis proyectos en GitHub GitHub

Ver todas las entradas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!
Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad