Condividi tramite


Operazioni di quantificatore in LINQ (C#)

Le operazioni quantificatori restituiscono un Boolean valore 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 sorgenti di dati basate su System.Linq.IQueryProvider utilizzano sorgenti di dati System.Linq.IQueryable<T> e alberi di espressioni. La sintassi consentita in C# per gli alberi delle espressioni ha limitazioni. Inoltre, ogni origine dati IQueryProvider, ad esempio EF Core può imporre altre restrizioni. Consultare la documentazione relativa all'origine dati.

La figura seguente illustra operazioni di quantificazione diverse su sequenze di origine diverse. 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 di quantificatore LINQ

Nome metodo Descrizione Sintassi di espressione della query C# Altre informazioni
Tutti Determina se tutti gli elementi di una sequenza soddisfano una condizione. Non applicabile. Enumerable.All
Queryable.All
Qualunque Determina se gli elementi di una sequenza soddisfano una condizione. Non applicabile. Enumerable.Any
Queryable.Any
Contiene Determina se una sequenza contiene un elemento specificato. Non applicabile. Enumerable.Contains
Queryable.Contains

Tutti

Nell'esempio seguente, All viene utilizzato per trovare gli studenti che hanno ottenuto un punteggio superiore a 70 in tutti gli esami.

Annotazioni

È possibile fare riferimento alle origini dati comuni per questa area nell'articolo Panoramica degli operatori di query standard .

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

Qualunque

Il seguente esempio usa il Any per trovare gli studenti che hanno ottenuto un punteggio maggiore di 95 in qualsiasi 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

L'esempio seguente usa Contains per trovare gli studenti che hanno ottenuto il punteggio esatto di 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

Vedere anche