0Pricing
C# Academy · Lección

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

Comprobación rápida: ¿qué operador de LINQ agrupa los elementos por una clave y devuelve una secuencia de grupos?

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

  1. GroupBy, Join, Aggregate y proyecciones (tipos anónimos)
  2. Materialización (ToList, ToDictionary) y notas de rendimiento
  3. Consejos de composabilidad
← Volver a C# Academy