Condividi tramite


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.

Operazioni con quantificatore LINQ

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

Vedi anche