Compartilhar via


Filtrando dados em C# com LINQ

A filtragem refere-se à operação de restrição do conjunto de resultados para conter apenas os elementos que atendem a uma condição especificada. Ele também é chamado de 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 LINQ

Os métodos de operador de consulta padrão que executam a seleção sã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
Onde Seleciona valores baseados em uma função de predicado. where Enumerable.Where

Queryable.Where

O exemplo a seguir usa a where cláusula para filtrar de uma matriz as cadeias de caracteres que têm um comprimento 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
*/

Consulte também