Filtraggio dei dati in C# con LINQ

Il filtro si riferisce all'operazione in base alla quale il set di risultati viene limitato in modo da contenere solo gli elementi che corrispondono a una condizione specificata. Viene anche indicato come selezione di elementi che corrispondono alla condizione specificata.

Importante

In questi esempi viene usata un'origine dati System.Collections.Generic.IEnumerable<T>. Le origini dati basate su System.Linq.IQueryProvider usano origini dati System.Linq.IQueryable<T> e alberi delle espressioni. La sintassi C# consentita per gli alberi delle espressioni ha alcune limitazioni. Inoltre, ogni origine dati IQueryProvider, ad esempio EF Core può imporre ulteriori restrizioni. Consultare la documentazione relativa all'origine dati.

Nella figura seguente vengono illustrati i risultati del filtro di una sequenza di caratteri. Il predicato per l'operazione di filtro specifica che il carattere deve essere 'A'.

Diagramma che illustra un'operazione di filtro LINQ

I metodi dell'operatore query standard che eseguono la selezione sono elencati nella tabella seguente:

Nome metodo Descrizione Sintassi di espressione della query C# Ulteriori informazioni
OfType Seleziona i valori, a seconda della loro capacità di eseguire il cast a un tipo specificato. Non applicabile. Enumerable.OfType

Queryable.OfType
Where Seleziona i valori che si basano su una funzione di predicato. where Enumerable.Where

Queryable.Where

Nell'esempio seguente viene usata la clausola where per filtrare da una matrice le stringhe con una lunghezza specifica.

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 query equivalente che usa la sintassi del metodo è mostrata nel codice seguente:

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
*/

Vedi anche