Compartilhar via


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

Diagrama que mostra uma operação de filtragem do LINQ

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
*/

Confira também