Compartilhar via


LINQ e tipos genéricos (C#)

LINQconsultas são baseadas em tipos genéricos, que foram introduzidos na versão 2.0 da .NET Framework.Não é necessário um conhecimento profundo dos genéricos antes de começar a escrever consultas.No entanto, talvez seja necessário compreender dois conceitos básicos:

  1. Quando você cria uma instância de uma classe de coleção genérica, como List<T>, substitua o "T" com o tipo de objetos que manterá a lista.Por exemplo, uma lista de seqüências de caracteres é expressa como List<string>e uma lista de Customer objetos é expresso como List<Customer>.Uma lista genérica tem rigidez de tipos e oferece muitos benefícios em coleções que armazenam seus elementos como Object.Se você tentar adicionar um Customer para um List<string>, você obterá um erro em tempo de compilação.Ele é fácil de usar coleções genéricas porque você não tem que executar a conversão de tipo em tempo de execução.

  2. IEnumerable<T>é a interface que permite que classes de coleção genérica para ser enumerados, usando o foreach instrução.Classes de coleção genérica oferecem suporte à IEnumerable<T> classes de coleção apenas como não-genéricas como ArrayList suporte IEnumerable.

Para obter mais informações sobre os genéricos, consulte Genéricos (guia de programação do C#).

IEnumerable &lt;T&gt; variáveis em consultas LINQ

LINQvariáveis de consulta são digitadas como IEnumerable<T> ou um tipo derivado, como IQueryable<T>.Quando você vir uma variável de consulta que é digitada como IEnumerable<Customer>, apenas significa que a consulta, quando ele é executado, produzirá uma seqüência de zero ou mais Customer objetos.

IEnumerable<Customer> customerQuery =
    from cust in customers
    where cust.City == "London"
    select cust;

foreach (Customer customer in customerQuery)
{
    Console.WriteLine(customer.LastName + ", " + customer.FirstName);
}

Para obter mais informações, consulte Relações de tipo em operações de consulta do LINQ (C#).

Permitindo que as declarações de tipo genérico do compilador alça

Se você preferir, você pode evitar a sintaxe genérica usando o var palavra-chave.O var palavra-chave instrui o compilador para inferir o tipo de uma variável de consulta, observando a fonte de dados especificada a from cláusula.O exemplo a seguir produz o mesmo código compilado do exemplo anterior:

var customerQuery2 = 
    from cust in customers
    where cust.City == "London"
    select cust;

foreach(var customer in customerQuery2)
{
    Console.WriteLine(customer.LastName + ", " + customer.FirstName);
}

O var palavra-chave é útil quando o tipo da variável é óbvio ou quando não é importante que especificar explicitamente aninhados tipos genéricos, como aqueles que são produzidos por consultas do grupo.Em geral, é recomendável que se você usar var, perceber que ele pode tornar seu código mais difícil para outras pessoas leiam.Para obter mais informações, consulte Variáveis de locais digitadas implicitamente (C# Guia de programação).

Consulte também

Referência

Genéricos (guia de programação do C#)

Outros recursos

Guia de Introdução do LINQ em C#