Partager via


Filtrage des données en C# avec LINQ

Le filtrage fait référence à l’opération de restriction du jeu de résultats pour contenir uniquement les éléments qui répondent à une condition spécifiée. Elle est également appelée sélection d’éléments qui correspondent à la condition spécifiée.

Important

Ces exemples utilisent une source de données System.Collections.Generic.IEnumerable<T>. Les sources de données basées sur System.Linq.IQueryProvider utilisent des sources de données System.Linq.IQueryable<T> et des arborescences d’expressions. Les arborescences d’expressions présentent des limitations sur la syntaxe C# autorisée. De plus, chaque source de données IQueryProvider, telle que EF Core peut imposer des restrictions supplémentaires. Consultez la documentation de votre source de données.

L’illustration suivante montre les résultats du filtrage d’une séquence de caractères. Le prédicat de l’opération de filtrage spécifie que le caractère doit être « A ».

Diagramme montrant une opération de filtrage LINQ

Les méthodes d’opérateur de requête standard qui effectuent la sélection sont répertoriées dans le tableau suivant :

Nom de la méthode Descriptif Syntaxe d'expression de requête C# Plus d’informations
OfType Sélectionne les valeurs, en fonction de leur capacité à être converties en un type spécifié. Non applicable. Enumerable.OfType

Queryable.OfType
Sélectionne les valeurs basées sur une fonction de prédicat. where Enumerable.Where

Queryable.Where

L’exemple suivant utilise la where clause pour filtrer à partir d’un tableau ces chaînes qui ont une longueur spécifique.

string[] words = ["the", "quick", "brown", "fox", "jumps"];

IEnumerable<string> query = from word in words
                            where word.Length == 3
                            select word;

foreach (string str in query)
{
    Console.WriteLine(str);
}

/* This code produces the following output:

    the
    fox
*/

La requête équivalente utilisant la syntaxe de méthode est illustrée dans le code suivant :

string[] words = ["the", "quick", "brown", "fox", "jumps"];

IEnumerable<string> query =
    words.Where(word => word.Length == 3);

foreach (string str in query)
{
    Console.WriteLine(str);
}

/* This code produces the following output:

    the
    fox
*/

Voir aussi