Compartilhar via


O LINQ e tipos genéricos

LINQ consultas baseiam-se em tipos genéricos, que foram introduzidos na versão 2.0 das .NET Framework. Não é necessário um conhecimento profundo dos genéricos antes de começar a escrever consultas.No entanto, convém entender dois conceitos básicos:

  1. Quando você criar uma instância de uma classe de coleção genérica, sistema autônomo List<T>, substituir o "T" pelo tipo de objetos que manterá a lista. Por exemplo, uma lista de cadeias de caracteres é expresso sistema autônomo List<string>e uma lista de Customer objetos é expresso sistema autônomo List<Customer>. Uma lista genérica fortemente tipada e oferece muitas vantagens em coleções que armazenam seus elementos sistema autônomo Object. Se você tentar adicionar um Customer para um List<string>, você receberá uma mensagem de erro em time de compilar. É fácil de usar coleções genéricas porque não é necessário que executar a conversão de tipo de time de execução.

  2. IEnumerable<T> é a interface que permite que classes de coleção genéricos a serem enumerados, usando o foreach demonstrativo. Classes de coleção genérica suportam IEnumerable<T> Assim sistema autônomo classes de coleção não genéricas sistema autônomo ArrayList suporte IEnumerable.

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

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

LINQ variáveis de consulta são digitadas sistema autônomo IEnumerable<T> ou um tipo derivado, sistema autônomo IQueryable<T>. Quando você vir uma variável de consulta que é tipada sistema autônomo IEnumerable<Customer>, apenas significa que a consulta, quando ele é executado, produzirá uma sequê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 Tipo relacionamentos em operações consulta (LINQ).

Permitir que o compilador identificador genérico Type Declarations

Se preferir, você pode evitar sintaxe genérica usando o var palavra-chave.The var palavra-chave instrui o compilador a 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);
}

The var palavra-chave é útil quando o tipo da variável é óbvio ou quando não é que o importante especificar explicitamente aninhados tipos genéricos, sistema autônomo aqueles que são produzidos por agrupar de consultas. Em geral, é recomendável que se você usar var, perceber que ele pode tornar seu código mais difícil de ser lida por outras pessoas. Para obter mais informações, consulte Digitada implicitamente variáveis Local (C# Guia de programação).

Consulte também

Referência

Generics (Guia de programação C#) 

Outros recursos

Introdução ao LINQ in translation from VPE for Csharp