0Pricing
C# Academy · Lezione

GroupBy, Join, Aggregate, proiezioni (tipi anonimi)

Raggruppate gli elementi, unite le sequenze, riducetele con Aggregate e create proiezioni pulite usando i tipi anonimi.

GroupBy, Join, Aggregate, proiezioni (tipi anonimi) è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 1 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 3 lezioni in totale.

Panoramica degli operatori avanzati

Oggi:

  • GroupBy: crea gruppi in base a una chiave
  • Join: combina due sequenze in base a una chiave
  • Aggregate: riduce a un singolo valore
  • Tipi anonimi: proiezioni ordinate

Raggruppamento per chiave

GroupBy crea gruppi con una Key e una sequenza interna di elementi che condividono quella chiave.

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);
    }
  }
}

Join interno per chiave

Join mette in corrispondenza gli elementi di due sequenze in base alla chiave e crea una proiezione del risultato combinato.

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);
  }
}

Nozioni di base su Aggregate

Aggregate applica un accumulatore per ridurre una sequenza a un unico risultato. Scelga un buon valore iniziale.

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

Proiezione con tipo anonimo

Utilizzi i tipi anonimi per ottenere proiezioni ordinate: new { Name = c.Name, ... } oppure la forma abbreviata 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");
    }
  }
}

Suggerimenti pratici

Suggerimenti:

  • Dopo GroupBy, iteri prima sui gruppi e poi sugli elementi.
  • Utilizzi Join quando dispone di due sorgenti con chiavi corrispondenti.
  • Scelga un valore iniziale appropriato per Aggregate.
  • I tipi anonimi sono locali; dalle API pubbliche restituisca DTO concreti.

Scopo di GroupBy

Controllo rapido: quale operatore LINQ raggruppa gli elementi per chiave e restituisce una sequenza di gruppi?

Riepilogo

Riepilogo: utilizzi GroupBy per creare gruppi, Join per combinare sorgenti, Aggregate per ridurre e i tipi anonimi per proiezioni ordinate.

Domande Frequenti

La lezione «GroupBy, Join, Aggregate, proiezioni (tipi anonimi)» è gratuita?

Sì — il testo completo di «GroupBy, Join, Aggregate, proiezioni (tipi anonimi)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 3 lezioni in totale.

Cosa imparerò in «GroupBy, Join, Aggregate, proiezioni (tipi anonimi)»?

Raggruppate gli elementi, unite le sequenze, riducetele con Aggregate e create proiezioni pulite usando i tipi anonimi. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C# Academy?

Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 3.

Quanto tempo richiede la lezione «GroupBy, Join, Aggregate, proiezioni (tipi anonimi)»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C# Academy?

Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. GroupBy, Join, Aggregate, proiezioni (tipi anonimi)
  2. Materializzazione (ToList, ToDictionary) e note sulle prestazioni
  3. Consigli sulla componibilità
← Torna a C# Academy