Partilhar via


Operações de quantificador em LINQ (C#)

As operações do Quantifier retornam um Boolean valor que indica se alguns ou todos os elementos em uma sequência satisfazem uma condição.

Importante

Esses exemplos usam uma fonte de System.Collections.Generic.IEnumerable<T> dados. Fontes de dados baseadas em System.Linq.IQueryProvider fontes de dados de uso System.Linq.IQueryable<T> e árvores de expressão. As árvores de expressão têm limitações na sintaxe C# permitida. Além disso, cada IQueryProvider fonte de dados, como o EF Core , pode impor mais restrições. Verifique a documentação da sua fonte de dados.

A ilustração a seguir mostra duas operações de quantificador diferentes em duas sequências de origem diferentes. A primeira operação pergunta se algum dos elementos é o caractere 'A'. A segunda operação pergunta se todos os elementos são o caractere 'A'. Ambos os métodos retornam true neste exemplo.

Operações do LINQ Quantifier

Nome do método Description Sintaxe da expressão de consulta C# Mais Informações
Todos Determina se todos os elementos de uma sequência satisfazem uma condição. Não aplicável. Enumerable.All
Queryable.All
Qualquer Determina se quaisquer elementos em uma sequência satisfazem uma condição. Não aplicável. Enumerable.Any
Queryable.Any
Contains Determina se uma sequência contém um elemento especificado. Não aplicável. Enumerable.Contains
Queryable.Contains

Todos

O exemplo a seguir usa o All para encontrar alunos que pontuaram acima de 70 em todos os exames.

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

Qualquer

O exemplo a seguir usa o para encontrar alunos que obtiveram pontuação superior a Any 95 em qualquer exame.

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

Contains

O exemplo a seguir usa o Contains para encontrar alunos que pontuaram exatamente 95 em um exame.

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

Consulte também