Dela via


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ändning av 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
Alla Avgör om alla element i en sekvens uppfyller ett villkor. Ej tillämpbart. Enumerable.All
Queryable.All
Alla 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

Alla

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

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

Alla

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