Language Integrated Query
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[1] ou analisadores sintáticos.[2]
Diversos dos conceitos introduzidos pelo LINQ foram originalmente testados no projeto Cω.
Arquitetura no .NET 3.5
[editar | editar código-fonte]Operadores
[editar | editar código-fonte]Os operadores suportados pela API estipulada são:[3]
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:[3]
AsEnumerable
: converte paraIEnumerable<T>
.ToQueryable
: converte paraIQueryable<T>
.ToArray
: converte para vetor.ToList
: converte paraIList<T>
.ToDictionary
: converte paraIDictionary<K, T>
, indexado por K.ToLookup
: converte paraILookup<K, T>
, indexado por K.Cast
: converte uma coleçãoIEnumerable
não-genérica para umaIEnumerable<T>
, por conversão de tipo.OfType
: converte uma coleçãoIEnumerable
não-genérica para umaIEnumerable<T>
, incluindo somente elementos do tipoT
.
Referências
- ↑ «Rx framework»
- ↑ «Monadic Parser Combinators using C#3». Consultado em 21 de novembro de 2009
- ↑ a b «Standard Query Operators». Microsoft. Consultado em 30 de novembro de 2007
Ver também
[editar | editar código-fonte]Ligações externas
[editar | editar código-fonte]- «Projeto LINQ» (em inglês)