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