Operazioni quantificatore in LINQ (C#)
Le operazioni del quantificatore restituiscono un valore Boolean, che indica se alcuni o tutti gli elementi di una sequenza soddisfano una condizione.
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.
La figura seguente illustra due diverse operazioni del quantificatore in due diverse sequenze di origine. La prima operazione chiede se uno degli elementi è il carattere “A”. La seconda operazione chiede se tutti gli elementi sono il carattere "A". Entrambi i metodi restituiscono true
in questo esempio.
Nome metodo | Descrizione | Sintassi di espressione della query C# | Ulteriori informazioni |
---|---|---|---|
Tutte le date | Determina se tutti gli elementi di una sequenza soddisfano una condizione. | Non applicabile. | Enumerable.All Queryable.All |
Any | Determina se alcuni elementi di una sequenza soddisfano una condizione. | Non applicabile. | Enumerable.Any Queryable.Any |
Contiene | Determina se una sequenza contiene un elemento specifico. | Non applicabile. | Enumerable.Contains Queryable.Contains |
Tutte le date
Nell'esempio seguente viene usato All
per trovare gli studenti che hanno ottenuto un punteggio superiore a 70 per tutti gli esami.
IEnumerable<string> names = from student in students
where student.Scores.All(score => score > 70)
select $"{student.FirstName} {student.LastName}: {string.Join(", ", student.Scores.Select(s => s.ToString()))}";
foreach (string name in names)
{
Console.WriteLine($"{name}");
}
// This code produces the following output:
//
// Cesar Garcia: 71, 86, 77, 97
// Nancy Engström: 75, 73, 78, 83
// Ifunanya Ugomma: 84, 82, 96, 80
Any
Nell'esempio seguente viene usato Any
per trovare gli studenti che hanno ottenuto un punteggio superiore a 95 in un esame.
IEnumerable<string> names = from student in students
where student.Scores.Any(score => score > 95)
select $"{student.FirstName} {student.LastName}: {student.Scores.Max()}";
foreach (string name in names)
{
Console.WriteLine($"{name}");
}
// This code produces the following output:
//
// Svetlana Omelchenko: 97
// Cesar Garcia: 97
// Debra Garcia: 96
// Ifeanacho Jamuike: 98
// Ifunanya Ugomma: 96
// Michelle Caruana: 97
// Nwanneka Ifeoma: 98
// Martina Mattsson: 96
// Anastasiya Sazonova: 96
// Jesper Jakobsson: 98
// Max Lindgren: 96
Contiene
Nell'esempio seguente viene usato Contains
per trovare gli studenti che hanno ottenuto un punteggio esattamente pari a 95 in un esame.
IEnumerable<string> names = from student in students
where student.Scores.Contains(95)
select $"{student.FirstName} {student.LastName}: {string.Join(", ", student.Scores.Select(s => s.ToString()))}";
foreach (string name in names)
{
Console.WriteLine($"{name}");
}
// This code produces the following output:
//
// Claire O'Donnell: 56, 78, 95, 95
// Donald Urquhart: 92, 90, 95, 57