CSharp: Colecciones y LINQ
Aprende a dominar colecciones y LINQ en C# con esta guía avanzada para desarrolladores de software. Mejora tu código y optimiza tus consultas.
Aprende CSharp GRATIS y certifícateEn C#, las colecciones representan una parte esencial del manejo de datos. Proporcionan mecanismos para almacenar, recuperar y manipular conjuntos de datos de manera eficiente. Las colecciones más utilizadas en C# incluyen List<T>
, Dictionary<TKey, TValue>
, Queue<T>
, y Stack<T>
. Cada una tiene sus propias características y casos de uso específicos.
List
List<T>
es una colección genérica que permite almacenar elementos de un tipo específico. Se utiliza cuando necesitas una colección que puede crecer dinámicamente.
List<int> numeros = new List<int> { 1, 2, 3, 4, 5 };
numeros.Add(6);
Console.WriteLine(string.Join(", ", numeros));
Dictionary<TKey, TValue>
Dictionary<TKey, TValue>
es una colección que almacena pares clave-valor. Es útil cuando necesitas buscar valores asociados a claves de manera eficiente.
Dictionary<string, int> edades = new Dictionary<string, int>
{
{ "Juan", 30 },
{ "Ana", 25 },
{ "Luis", 35 }
};
Console.WriteLine(edades["Ana"]);
Queue
Queue<T>
sigue el principio FIFO (First In, First Out). Es útil para escenarios como procesamiento de tareas en orden.
Queue<string> cola = new Queue<string>();
cola.Enqueue("Tarea1");
cola.Enqueue("Tarea2");
Console.WriteLine(cola.Dequeue());
Stack
Stack<T>
sigue el principio LIFO (Last In, First Out). Se utiliza en escenarios como la gestión de llamadas de funciones.
Stack<string> pila = new Stack<string>();
pila.Push("Elemento1");
pila.Push("Elemento2");
Console.WriteLine(pila.Pop());
Introducción a LINQ en C#
LINQ (Language Integrated Query) es una característica de C# que permite realizar consultas sobre colecciones de datos con una sintaxis similar a SQL. LINQ proporciona una forma declarativa de trabajar con datos.
Consultas básicas con LINQ
Filtrado
El operador Where
se utiliza para filtrar elementos de una colección.
List<int> numeros = new List<int> { 1, 2, 3, 4, 5, 6 };
var numerosPares = numeros.Where(n => n % 2 == 0);
Console.WriteLine(string.Join(", ", numerosPares));
Proyección
El operador Select
permite transformar los elementos de una colección.
List<int> numeros = new List<int> { 1, 2, 3, 4, 5 };
var cuadrados = numeros.Select(n => n * n);
Console.WriteLine(string.Join(", ", cuadrados));
Operaciones avanzadas con LINQ
Agrupación
El operador GroupBy
permite agrupar elementos de una colección.
var personas = new List<(string Nombre, int Edad)>
{
("Juan", 30),
("Ana", 25),
("Luis", 35),
("Maria", 25)
};
var gruposPorEdad = personas.GroupBy(p => p.Edad);
foreach (var grupo in gruposPorEdad)
{
Console.WriteLine($"Edad: {grupo.Key}");
foreach (var persona in grupo)
{
Console.WriteLine($" Nombre: {persona.Nombre}");
}
}
Unión
El operador Join
permite combinar dos colecciones basándose en una clave común.
var personas = new List<(int Id, string Nombre)>
{
(1, "Juan"),
(2, "Ana"),
(3, "Luis")
};
var edades = new List<(int Id, int Edad)>
{
(1, 30),
(2, 25),
(3, 35)
};
var personasConEdad = personas.Join(
edades,
persona => persona.Id,
edad => edad.Id,
(persona, edad) => new { persona.Nombre, edad.Edad }
);
foreach (var persona in personasConEdad)
{
Console.WriteLine($"Nombre: {persona.Nombre}, Edad: {persona.Edad}");
}
Lecciones de este módulo de CSharp
Lecciones de programación del módulo Colecciones y LINQ del curso de CSharp.
Ejercicios de programación en este módulo de CSharp
Evalúa tus conocimientos en Colecciones y LINQ con ejercicios de programación Colecciones y LINQ de tipo Test, Puzzle, Código y Proyecto con VSCode.