🔷 LINQ — Language Integrated Query
LINQ permet d’écrire des requêtes sur des collections de données (tableaux, listes, bases de données, XML…) de manière simple, lisible et typée.
LINQ signifie : Language Integrated Query
👉 Tu peux l’utiliser avec :List,Array,Dictionary,DataTable,Entity Framework, etc.
✅ Syntaxe de base
🎯 Exemple classique
int[] nombres = { 1, 2, 3, 4, 5, 6 };
var pairs = from n in nombres
where n % 2 == 0
select n;
foreach (var n in pairs)
Console.WriteLine(n);
Affiche :
2,4,6
✌️ Deux syntaxes possibles
1. Syntaxe de requête (style SQL)
var result = from item in collection
where condition
select item;
2. Syntaxe par méthode (fluent)
var result = collection.Where(item => condition)
.Select(item => transformation);
Les deux donnent le même résultat, choisis selon ton style ou contexte.
🔧 Fonctions les plus utilisées en LINQ
Voici une petite boîte à outils LINQ pratique :
| Méthode | Description | Exemple |
|---|---|---|
Where |
Filtrer | .Where(x => x > 5) |
Select |
Projeter (transformer) | .Select(x => x * 2) |
OrderBy / OrderByDescending |
Trier | .OrderBy(x => x.Nom) |
First / FirstOrDefault |
Premier élément (ou null) | .FirstOrDefault() |
Any / All |
Test sur des éléments | .Any(x => x > 0) |
Count |
Compter | .Count(x => x % 2 == 0) |
GroupBy |
Grouper | .GroupBy(x => x.Catégorie) |
Distinct |
Uniques | .Distinct() |
ToList() / ToArray() |
Convertir le résultat | .ToList() |
🎯 Exemple plus avancé
var personnes = new List<Personne>
{
new Personne { Nom = "Alice", Age = 30 },
new Personne { Nom = "Bob", Age = 22 },
new Personne { Nom = "Charlie", Age = 30 }
};
var resultats = personnes
.Where(p => p.Age >= 25)
.OrderBy(p => p.Nom)
.Select(p => new { p.Nom, p.Age });
foreach (var p in resultats)
{
Console.WriteLine($"{p.Nom} - {p.Age}");
}
📁 Cas d'utilisation courants
-
🔍 Rechercher dans une collection
-
📊 Regrouper et trier des données
-
💡 Créer des vues temporaires sans nouvelle classe (type anonyme)
-
📄 Manipuler des fichiers XML (LINQ to XML)
-
🧮 Interroger une base de données (LINQ to SQL / LINQ to Entities)
Aucun commentaire:
Enregistrer un commentaire