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.
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