Language Integrated Query (LINQ) é um componente do Microsoft .NET que adiciona funcionalidades de consulta em algumas linguagens de programação .NET. O LINQ corresponde a uma sintaxe unificada, inicialmente incorporada às linguagens C# e Visual Basic, para consultas em fontes de dados variadas. A linguagem foi introduzida inicialmente nas linguagens Visual Basic 9.0 (Visual Basic 2008) e C# 3.0 (Visual C# 2008), em 19 de novembro de 2007 com o .NET Framework 3.5 e o Visual Studio 2008.
A sintaxe de consulta da LINQ foi inspirada na da Structured Query Language (SQL), que é uma linguagem padrão para comunicação com bancos de dados relacionais. Assim como na linguagem SQL, as expressões de consulta LINQ permitem a construção de instruções variadas para extração de informações.
Ele define um conjunto de métodos chamados operadores de consulta, expressões lambda e tipos anônimos.
Com o conjunto, pode se por exemplo projetar ou filtrar informação em vetores, coleções de objetos do tipo IEnumerable<T> (LINQ to Objects), manipulação de XML em memória (LINQ to XML), infraestrutura para gerenciar dados relacionais como objetos, este componente permite fazer mapeamento objeto-relacional em um modelo de dados de um banco de dados relacional (atualmente só existe Provider para SQL Server) (LINQ to SQL), consulta de objetos do tipo Conjunto de dados na memória (LINQ to DataSet) entre outros. Outros usos mais especializados incluem processadores de eventos ou analisadores sintáticos.
Diversos dos conceitos introduzidos pelo LINQ foram originalmente testados no projeto Cω.
Arquitetura no .NET 3.5 Operadores Os operadores suportados pela API estipulada são: Select Faz uma projeção na coleção de dados para selecionar regiões relevantes entre os elementos. Where Define regras de filtragem na coleção de dados que são avaliadas para cada item.
SelectMany Mapeamento estipulado pelo programador de uma coleção de dados para coleções.
Sum, Min, Max, Average Encontra a soma, o menor elemento, o maior elemento ou a média dos itens da coleção de dados, respectivamente.
Aggregate Uma versão generalizada de Sum, Min, Max.
Join, GroupJoin Faz a junção de duas coleções de dados, baseado em chaves de comum valor semântico em cada coleção.
Take, TakeWhile O primeiro seleciona os primeiros n ojectos da coleção, enquanto o segundo toma um predicado que seleciona os objectos que casam com o predicado. Skip, SkipWhile Complementos dos anteriores, eles ignoram os primeiros n objetos da coleção, ou enquanto há casamento com o predicado.
OfType Seleciona objetos de determinado tipo.
Concat Concatena duas coleções.
OrderBy, ThenBy O primeiro determina o critério de ordenação da coleção de dados, ascendente por padrão. O segundo especifica critérios subsequentes de ordenação.
Reverse Inverte a ordenação da coleção de dados.
GroupBy Extrai uma chave e retorna uma coleção para cada chave.
Distinct Remove instâncias repetidas na coleção.
Union, Intersect, Except Provem união, interseção e complementar em duas sequências, respectivamente.
SequenceEqual Verifica se todos os elementos de duas coleções são iguais.
First, FirstOrDefault, Last, LastOrDefault Retorna o primeiro elemento, o primeiro ou o valor padrão, o último, o último ou valor padrão da coleção de dados, respectivamente.
Single Retorna o único elemento que casa um predicado dado. Havendo nenhum ou múltiplos casamentos, uma exceção é lançada.
ElementAt Retorna o elemento em determinado índice na coleção de dados.
Any, All, Contains O primeiro verifica se algum elemento da coleção casa o predicado. O segundo verifica se todos os elementos da coleção casam o predicado. O terceiro verifica se a coleção contém determinado valor.
Count Conta a quantidade de elementos em uma coleção.
Ainda são especificados alguns operadores de conversão da coleção em outro tipo: AsEnumerable: converte para IEnumerable<T>. ToQueryable: converte para IQueryable<T>. ToArray: converte para vetor. ToList: converte para IList<T>. ToDictionary: converte para IDictionary<K, T>, indexado por K. ToLookup: converte para ILookup<K, T>, indexado por K. Cast: converte uma coleção IEnumerable não-genérica para uma IEnumerable<T>, por conversão de tipo. OfType: converte uma coleção IEnumerable não-genérica para uma IEnumerable<T>, incluindo somente elementos do tipo T.
Ver também Mapeamento objeto-relacional
Ligações externas
Categoria:Linguagens de consulta Categoria:Plataforma .NET