Saltar al contenido

Ejercicios Avanzados de Expresiones Lambda y LINQ en C#

macbook pro

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
Etiquetas:

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 !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

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