Kvantifieraråtgärder i LINQ (C#)

Kvantifieraråtgärder returnerar ett Boolean värde som anger om vissa eller alla element i en sekvens uppfyller ett villkor.

Viktigt!

Dessa exempel använder en System.Collections.Generic.IEnumerable<T> datakälla. Datakällor baserade på System.Linq.IQueryProvider använder System.Linq.IQueryable<T> datakällor och uttrycksträd. Uttrycksträd har begränsningar för den tillåtna C#-syntaxen. Dessutom kan varje IQueryProvider datakälla, till exempel EF Core , införa fler begränsningar. Kontrollera dokumentationen för din datakälla.

Följande bild visar två olika kvantifieraråtgärder på två olika källsekvenser. Den första åtgärden frågar om något av elementen är tecknet "A". Den andra åtgärden frågar om alla element är tecknet "A". Båda metoderna returneras true i det här exemplet.

LINQ-kvantifieraråtgärder

Metodnamn Beskrivning Syntax för C#-frågeuttryck Mer information
Allt Avgör om alla element i en sekvens uppfyller ett villkor. Ej tillämpbart. Enumerable.All
Queryable.All
Vilken som helst Avgör om några element i en sekvens uppfyller ett villkor. Ej tillämpbart. Enumerable.Any
Queryable.Any
Innehåller Avgör om en sekvens innehåller ett angivet element. Ej tillämpbart. Enumerable.Contains
Queryable.Contains

Allt

I följande exempel används All för att hitta elever som fått över 70 poäng på alla prov.

Anmärkning

Du kan läsa vanliga datakällor för det här området i artikeln Översikt över vanliga frågeoperatorer .

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

Vilken som helst

I följande exempel används Any för att hitta elever som fått fler än 95 poäng på ett prov.

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

Innehåller

I följande exempel används Contains för att hitta elever som fick exakt 95 poäng på ett prov.

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

Se även