Filtrando dados em C# com LINQ
A filtragem é a operação de restringir o conjunto de resultados de forma que ele contenha apenas os elementos correspondentes a uma condição especificada. Também é conhecido como seleção de elementos que correspondem à condição especificada.
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 os resultados da filtragem de uma sequência de caracteres. O predicado para a operação de filtragem especifica que o caractere deve ser "A".
Os métodos de operador de consulta padrão que realizam a seleção estão listados na tabela a seguir:
Nome do método | Descrição | Sintaxe de expressão de consulta C# | Mais informações |
---|---|---|---|
OfType | Seleciona valores, dependendo da capacidade de serem convertidos em um tipo especificado. | Não aplicável. | Enumerable.OfType Queryable.OfType |
Where | Seleciona valores com base em uma função de predicado. | where |
Enumerable.Where Queryable.Where |
O exemplo a seguir usa a cláusula where
para filtrar em uma matriz as cadeias de caracteres com um tamanho específico.
string[] words = ["the", "quick", "brown", "fox", "jumps"];
IEnumerable<string> query = from word in words
where word.Length == 3
select word;
foreach (string str in query)
{
Console.WriteLine(str);
}
/* This code produces the following output:
the
fox
*/
A consulta equivalente usando a sintaxe do método é mostrada no código a seguir:
string[] words = ["the", "quick", "brown", "fox", "jumps"];
IEnumerable<string> query =
words.Where(word => word.Length == 3);
foreach (string str in query)
{
Console.WriteLine(str);
}
/* This code produces the following output:
the
fox
*/