GroupBy, Join, Aggregate y proyecciones (tipos anónimos)
Agrupe elementos, combine secuencias, redúzcalas con Aggregate y proyecte resultados limpios mediante tipos anónimos.
GroupBy, Join, Aggregate y proyecciones (tipos anónimos) es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 3 lecciones en total.
Descripción general de los operadores avanzados
En esta lección:
- GroupBy: crea grupos por clave
- Join: combina dos secuencias mediante una clave
- Aggregate: reduce una secuencia a un único valor
- Tipos anónimos: permiten crear proyecciones ordenadas
Agrupación por clave
GroupBy crea grupos con una Key y una secuencia interna de elementos que comparten esa clave.
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
string[] words = new string[] { "ant", "cat", "tiger", "lion", "dog", "eagle" };
var groups = words.GroupBy(w => w.Length);
foreach (var g in groups)
{
Console.WriteLine("Len " + g.Key + ":");
foreach (string w in g) Console.WriteLine(" - " + w);
}
}
}
Unión interna por clave
Join relaciona elementos de dos secuencias mediante una clave y proyecta el resultado combinado.
using System;
using System.Linq;
public sealed class Customer { public int Id; public string Name; public Customer(int id, string name){ Id=id; Name=name; } }
public sealed class Order { public int CustomerId; public string Item; public Order(int cid, string item){ CustomerId=cid; Item=item; } }
public class Program
{
public static void Main(string[] args)
{
var customers = new Customer[] { new Customer(1,"Ada"), new Customer(2,"Bob") };
var orders = new Order[] { new Order(1,"Book"), new Order(1,"Pen"), new Order(2,"Map") };
var joined = customers.Join(
orders,
c => c.Id,
o => o.CustomerId,
(c, o) => c.Name + " -> " + o.Item);
foreach (string s in joined) Console.WriteLine(s);
}
}
Conceptos básicos de Aggregate
Aggregate aplica un acumulador para reducir una secuencia a un único resultado. Elija una buena semilla.
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
int[] xs = new int[] { 1, 2, 3, 4 };
// Product with seed 1
int product = xs.Aggregate(1, (acc, n) => acc * n);
Console.WriteLine("Product = " + product); // 24
// Join words with a separator using seed
string[] words = new string[] { "a", "b", "c" };
string csv = words.Aggregate("", (acc, w) => acc == "" ? w : acc + "," + w);
Console.WriteLine(csv); // a,b,c
}
}
Proyección con tipos anónimos
Utilice tipos anónimos para crear proyecciones ordenadas: new { Name = c.Name, ... } o la forma abreviada new { c.Name }.
using System;
using System.Linq;
public sealed class City { public string Name; public int Pop; public City(string n,int p){ Name=n; Pop=p; } }
public class Program
{
public static void Main(string[] args)
{
var cities = new City[]
{
new City("Oslo", 634000),
new City("Rome", 2873000),
new City("Riga", 605000)
};
var small = cities
.Where(c => c.Pop < 1000000)
.Select(c => new { c.Name, Millions = (c.Pop / 1000000.0) });
foreach (var x in small)
{
Console.WriteLine(x.Name + " ~ " + x.Millions + "M");
}
}
}
Consejos prácticos
Consejos:
- Después de GroupBy, itere primero por los grupos y después por sus elementos.
- Utilice Join cuando tenga dos orígenes con claves coincidentes.
- Elija una semilla adecuada para Aggregate.
- Los tipos anónimos son locales; devuelva DTO concretos desde las API públicas.
Propósito de GroupBy
Resumen
Resumen: utilice GroupBy para crear grupos, Join para combinar orígenes, Aggregate para reducir y tipos anónimos para crear proyecciones limpias.
Preguntas frecuentes
¿La lección «GroupBy, Join, Aggregate y proyecciones (tipos anónimos)» es gratis?
Sí — el texto completo de «GroupBy, Join, Aggregate y proyecciones (tipos anónimos)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 3 lecciones en total.
¿Qué aprenderé en «GroupBy, Join, Aggregate y proyecciones (tipos anónimos)»?
Agrupe elementos, combine secuencias, redúzcalas con Aggregate y proyecte resultados limpios mediante tipos anónimos. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.
¿Cuánto tiempo toma la lección «GroupBy, Join, Aggregate y proyecciones (tipos anónimos)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- GroupBy, Join, Aggregate y proyecciones (tipos anónimos)
- Materialización (ToList, ToDictionary) y notas de rendimiento
- Consejos de composabilidad