GroupBy, Join, Aggregate et projections (types anonymes)
Regroupez des éléments, joignez des séquences, réduisez-les avec Aggregate et produisez des résultats clairs à l’aide de types anonymes.
GroupBy, Join, Aggregate et projections (types anonymes) est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.
Vue d’ensemble des opérateurs avancés
Aujourd’hui :
- GroupBy : crée des groupes par clé
- Join : combine deux séquences selon une clé
- Aggregate : réduit une séquence à une seule valeur
- Types anonymes : permettent des projections soignées
Regroupement par clé
GroupBy crée des groupes comportant une Key et une séquence interne d’éléments partageant cette clé.
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);
}
}
}
Jointure interne par clé
Join associe des éléments de deux séquences selon une clé et projette le résultat combiné.
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);
}
}
Bases d’Aggregate
Aggregate applique un accumulateur pour réduire une séquence à un seul résultat. Choisissez une bonne valeur initiale.
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
}
}
Projection avec des types anonymes
Utilisez des types anonymes pour des projections soignées : new { Name = c.Name, ... } ou sous forme abrégée 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");
}
}
}
Conseils pratiques
Conseils :
- Après GroupBy, parcourez d’abord les groupes, puis les éléments.
- Utilisez Join lorsque vous avez deux sources avec des clés correspondantes.
- Choisissez une valeur initiale adaptée pour Aggregate.
- Les types anonymes sont locaux ; renvoyez des DTO concrets depuis les API publiques.
Objectif de GroupBy
Récapitulatif
Récapitulatif : utilisez GroupBy pour créer des groupes, Join pour combiner des sources, Aggregate pour réduire une séquence et les types anonymes pour des projections claires.
Questions Fréquemment Posées
La leçon « GroupBy, Join, Aggregate et projections (types anonymes) » est-elle gratuite ?
Oui — le texte complet de « GroupBy, Join, Aggregate et projections (types anonymes) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « GroupBy, Join, Aggregate et projections (types anonymes) » ?
Regroupez des éléments, joignez des séquences, réduisez-les avec Aggregate et produisez des résultats clairs à l’aide de types anonymes. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 3.
Combien de temps prend la leçon « GroupBy, Join, Aggregate et projections (types anonymes) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- GroupBy, Join, Aggregate et projections (types anonymes)
- Matérialisation (ToList, ToDictionary) et remarques sur les performances
- Conseils de composabilité