Introducción a LINQ

LINQ (Language Integrated Query) es una característica poderosa de C# que permite realizar consultas sobre colecciones de datos de una manera concisa y legible. LINQ proporciona una sintaxis unificada para consultar diferentes tipos de datos, como colecciones en memoria, bases de datos, XML, y más.

Conceptos Clave de LINQ

  • Operadores de Consulta: Son métodos que permiten realizar operaciones como filtrado, proyección, agrupación, y ordenación sobre colecciones de datos.
  • Expresiones Lambda: Son funciones anónimas que se utilizan para crear delegados o expresiones de árbol de expresión.
  • Métodos de Extensión: LINQ utiliza métodos de extensión para agregar funcionalidad a las colecciones existentes.

Sintaxis Básica de LINQ

Ejemplo de Consulta LINQ

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

class Program
{
    static void Main()
    {
        // Lista de ejemplo
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // Consulta LINQ para obtener números pares
        var evenNumbers = from num in numbers
                          where num % 2 == 0
                          select num;

        // Imprimir resultados
        foreach (var num in evenNumbers)
        {
            Console.WriteLine(num);
        }
    }
}

Explicación del Código

  1. Lista de Ejemplo: Se crea una lista de números enteros.
  2. Consulta LINQ: Se utiliza una consulta LINQ para seleccionar los números pares de la lista.
    • from num in numbers: Itera sobre cada número en la lista.
    • where num % 2 == 0: Filtra los números que son pares.
    • select num: Selecciona los números que cumplen con la condición.
  3. Imprimir Resultados: Se itera sobre los resultados de la consulta y se imprimen.

Operadores de Consulta LINQ

Operadores de Filtrado

  • Where: Filtra los elementos de una colección en función de una condición.
var evenNumbers = numbers.Where(num => num % 2 == 0);

Operadores de Proyección

  • Select: Proyecta cada elemento de una colección en una nueva forma.
var squares = numbers.Select(num => num * num);

Operadores de Ordenación

  • OrderBy: Ordena los elementos de una colección en orden ascendente.
var orderedNumbers = numbers.OrderBy(num => num);
  • OrderByDescending: Ordena los elementos de una colección en orden descendente.
var orderedNumbersDesc = numbers.OrderByDescending(num => num);

Operadores de Agrupación

  • GroupBy: Agrupa los elementos de una colección en función de una clave.
var groupedNumbers = numbers.GroupBy(num => num % 2 == 0 ? "Even" : "Odd");

Operadores de Agregación

  • Count: Cuenta el número de elementos en una colección.
int count = numbers.Count();
  • Sum: Calcula la suma de los elementos en una colección.
int sum = numbers.Sum();
  • Average: Calcula el promedio de los elementos en una colección.
double average = numbers.Average();

Ejercicios Prácticos

Ejercicio 1: Filtrar y Proyectar

Descripción: Dada una lista de números, filtra los números impares y proyecta sus cuadrados.

Código Inicial:

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

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // Tu código aquí

        foreach (var num in result)
        {
            Console.WriteLine(num);
        }
    }
}

Solución:

var result = numbers.Where(num => num % 2 != 0)
                    .Select(num => num * num);

Ejercicio 2: Agrupar y Contar

Descripción: Dada una lista de palabras, agrúpalas por su longitud y cuenta cuántas palabras hay en cada grupo.

Código Inicial:

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

class Program
{
    static void Main()
    {
        List<string> words = new List<string> { "apple", "banana", "cherry", "date", "fig", "grape" };

        // Tu código aquí

        foreach (var group in groupedWords)
        {
            Console.WriteLine($"Length: {group.Key}, Count: {group.Count()}");
        }
    }
}

Solución:

var groupedWords = words.GroupBy(word => word.Length);

Conclusión

En esta sección, hemos explorado los conceptos básicos de LINQ, incluyendo su sintaxis y los operadores de consulta más comunes. LINQ es una herramienta poderosa que simplifica la manipulación de colecciones de datos en C#. A medida que avances en tu aprendizaje, descubrirás que LINQ puede hacer que tu código sea más legible y eficiente.

En el próximo módulo, profundizaremos en la Programación Asíncrona, donde aprenderás a manejar operaciones que pueden ejecutarse de manera concurrente para mejorar el rendimiento de tus aplicaciones.

© Copyright 2024. Todos los derechos reservados