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
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
- GroupBy, Join, Aggregate, proiezioni (tipi anonimi)
- Materializzazione (ToList, ToDictionary) e note sulle prestazioni
- Consigli sulla componibilità