LINQ essentiel
DébutantLINQ (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();