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:
Quando você cria uma instância de uma classe de coleção genérica, como List, 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.
IEnumerableé 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 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 em C#).
IEnumerable <T> variáveis em consultas LINQ
LINQvariáveis de consulta são digitadas como IEnumerable ou um tipo derivado, como IQueryable. 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 Relacionamentos de tipo em operações de consulta 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 locais de tipo implícito (Guia de Programação em C#).
Consulte também
Referência
Genéricos (Guia de Programação em C#)