</>
Plan du cours — 15/46

LINQ essentiel

Débutant

LINQ (Language Integrated Query) permet de filtrer, transformer et agréger des collections avec une syntaxe déclarative.

var utilisateurs = new List<Utilisateur>
{
    new("Alice", "alice@example.com", 30),
    new("Bob", "bob@example.com", 17),
    new("Chloé", "chloe@example.com", 25),
};

// Filtrer
var majeurs = utilisateurs.Where(u => u.Age >= 18);

// Transformer (projeter)
var emails = utilisateurs.Select(u => u.Email);

// Trier
var parAge = utilisateurs.OrderBy(u => u.Age);
var parAgeDesc = utilisateurs.OrderByDescending(u => u.Age);

// Premier élément (lève une exception si aucun) / ou valeur par défaut
var premier = utilisateurs.First(u => u.Age > 20);
var premierOuNull = utilisateurs.FirstOrDefault(u => u.Age > 100);

// Grouper
var parTranche = utilisateurs.GroupBy(u => u.Age >= 18 ? "Majeur" : "Mineur");

// Agréger
var moyenneAge = utilisateurs.Average(u => u.Age);
var total = utilisateurs.Count(u => u.Age >= 18);

// Chaîner plusieurs opérations (évalué paresseusement jusqu'au ToList/foreach)
var resultat = utilisateurs
    .Where(u => u.Age >= 18)
    .OrderBy(u => u.Nom)
    .Select(u => u.Nom)
    .ToList();

Cas pratique : transformer une liste d'entités en DTO triée, prête à renvoyer depuis une API.

public record UtilisateurDto(string Nom, string Email);

List<UtilisateurDto> dtos = utilisateurs
    .Where(u => u.Age >= 18)
    .OrderBy(u => u.Nom)
    .Select(u => new UtilisateurDto(u.Nom, u.Email))
    .ToList();