Compartilhar via


C# recursos que oferecem suporte ao LINQ

A seção a seguir apresenta novas construções de linguagem, introduzidas no C# 3.0.Embora esses novos recursos são usados para um grau com LINQ consultas, eles não estão limitados a LINQ e pode ser usado em qualquer contexto onde você encontrá-los úteis.

Expressões de consulta

Expressões de consultas usam a sintaxe declarativa semelhante a SQL ou XQuery à consulta sobre coleções IEnumerable.Na compilação sintaxe de consulta de hora é convertido para chamadas de método para um LINQ a implementação do provedor de métodos de extensão de operadores de consulta padrão.Os aplicativos controlam os operadores de consulta padrão que estão no escopo, especificando o namespace apropriado com um using diretiva.A expressão de consulta a seguir usa uma matriz de seqüências de caracteres, agrupa-os de acordo com para o primeiro caractere na seqüência de caracteres e ordena os grupos.

var query = from str in stringArray
            group str by str[0] into stringGroup
            orderby stringGroup.Key
            select stringGroup;

Para obter mais informações, consulte Expressões de consulta do LINQ (guia de programação do C#).

Implicitamente variáveis do tipo (var)

Em vez de especificar explicitamente um tipo ao declarar e inicializar uma variável, você pode usar o var modificador para instruir o compilador para inferir e atribuir o tipo, conforme mostrado aqui:

var number = 5;
var name = "Virginia";
var query = from str in stringArray
            where str[0] == 'm'
            select str;

As variáveis declaradas como var são apenas tão fortemente tipados como variáveis cujo tipo você especificar explicitamente.O uso de var torna possível criar tipos anônimos, mas ele pode ser usado para qualquer variável local.Arrays também podem ser declarados com a digitação implícita.

Para obter mais informações, consulte Variáveis de locais digitadas implicitamente (C# Guia de programação).

Objeto e coleção inicializadores

Inicializadores de objeto e coleção tornam possível inicializar objetos sem explicitamente chamar um construtor para o objeto.Inicializadores são normalmente usados em expressões de consulta quando eles os dados de origem do projeto em um novo tipo de dados.Supondo que uma classe chamada Customer com público Name e Phone propriedades, o inicializador de objeto podem ser usadas como no código a seguir:

Customer cust = new Customer { Name = "Mike", Phone = "555-1212" };

Para obter mais informações, consulte Objeto e coleção inicializadores (guia de programação do C#).

Tipos Anônimos

Um tipo anônimo é construído pelo compilador e o nome do tipo só está disponível para o compilador.Tipos anônimos fornecem uma maneira conveniente para agrupar um conjunto de propriedades temporariamente em um resultado de consulta sem ter que definir um tipo nomeado de separado.Tipos anônimos são inicializados com uma nova expressão e um inicializador de objeto, como mostrado aqui:

select new {name = cust.Name, phone = cust.Phone};

Para obter mais informações, consulte Tipos anônimos (guia de programação do C#).

Métodos de extensão

Um método de extensão é um método estático que pode ser associado um tipo, para que ele pode ser chamado como se fosse um método de instância no tipo.Este recurso permite que você, na verdade, "adicione" novos métodos para tipos existentes sem realmente modificá-los.Os operadores de consulta padrão são um conjunto de métodos de extensão que fornecem LINQ para qualquer tipo que implementa a funcionalidade de consulta IEnumerable<T>.

Para obter mais informações, consulte Métodos de extensão (guia de programação do C#).

Expressões Lambda

Uma expressão lambda é uma função embutida que usa a = > operador para separar parâmetros do corpo da função de entrada e pode ser convertida em tempo de compilação para um representante ou uma árvore de expressão.Na LINQ de programação, você encontrará as expressões lambda quando você faz chamadas de método direto para os operadores de consulta padrão.

Para obter mais informações, consulte:

Propriedades de auto-implementado

Propriedades de auto-implementado fazem a declaração de propriedade mais conciso.Quando você declara uma propriedade, conforme mostrado no exemplo a seguir, o compilador criará um campo particular e anônimo de backup que não esteja acessível, exceto por meio da propriedade getter e setter.

public string Name {get; set;}

Para obter mais informações, consulte Auto-implementado propriedades (guia de programação do C#).

Consulte também

Conceitos

Visual Basic os recursos que oferecem suporte ao LINQ

Outros recursos

LINQ (consulta integrada à linguagem)