Compartilhar via


Operações do quantificador no LINQ (C#)

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

Importante

Esses exemplos usam uma fonte de dados System.Collections.Generic.IEnumerable<T>. Fontes de dados baseadas em System.Linq.IQueryProvider usam as fontes de dados System.Linq.IQueryable<T> e as árvores de expressão. As árvores de expressão possuem limitações na sintaxe C# permitida. Além disso, todas as fontes de dados IQueryProvider, como EF Core, podem impor mais restrições. Verifique a documentação da 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 de quantificador LINQ

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

Tudo

O exemplo a seguir usa o All para localizar alunos que obtiveram pontuação 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 Any para encontrar alunos com pontuação superior a 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

Contém

O exemplo a seguir usa o Contains para encontrar alunos que obtiveram exatamente 95 pontos 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

Confira também