Language-Integrated Query
(LINQ)
Formação ANPRI
LINQ – O que é?
• Uma consulta é uma expressão que recupera dados de uma fonte de
dados.
• As consultas normalmente são expressas numa linguagem de
específica: SQL (Base de Dados) , Xquery (XML)…
• Problema?
• É necessário aprender uma nova linguagem de consulta para cada tipo de
fonte de dados ou formato de dados
• Solução:
• O LINQ oferece um modelo consistente para trabalhar com os dados entre
vários tipos de fontes e formatos
LINQ - Etapas
• Todas as operações de consulta LINQ consistem em três ações
distintas:
1. Obter a fonte de dados.
2. Criar a consulta.
3. Executar a consulta.
LINQ – Fonte de Dados (1)
• Tipos que dão suporte a IEnumerable<T> ou uma interface derivada, como
a genérica IQueryable<T>, são chamados tipos passíveis de consulta.
• Um tipo passível de consulta não exige modificação ou tratamento especial
para servir como uma fonte de dados do LINQ
• Os tipos mais comuns:
• Coleções genéricas: List<T>, Set<T>…
• Arrays
LINQ – Fontes de Dados (2)
Classe Aluno
Classe Aluno com três propriedades para guardar o
primeiro e último no do aluno e uma lista de notas
obtidas
Fonte de Dados
LINQ – Consulta (1)
• A consulta especifica quais as informações que devem ser
recuperadas da fonte (ou fontes) de dados.
• Opcionalmente, uma consulta também especifica como essas
informações devem ser classificadas, agrupadas e moldadas antes de
serem retornadas.
• Uma consulta é armazenada numa variável de consulta e é inicializada
com uma expressão de consulta.
• Para tornar mais fácil escrever consultas, o C# introduziu uma nova
sintaxe de consulta.
LINQ – Consulta (2)
Fazemos uma consulta ao array alunos , selecionando os alunos que tenham a primeira nota maior que 50 e a
terceira nota menor que 50. Ordenamos os resultados pelo primeiro nome de forma ascendente. A variável
estudante, guarda o resultado.
Podemos deixar que o compilador decida qual o tipo de dados (Type Inference)
LINQ – Execução da Consulta
• A variável de consulta armazena somente os
comandos da consulta.
• A execução real da consulta é adiada até que haja
interação sobre a variável de consulta numa instrução
foreach.
• Este conceito é conhecido como execução adiada e é
demonstrado no exemplo a seguir:
LINQ – Forçar execuções das consultas
• Para forçar a execução imediata de qualquer consulta e armazenar os
resultados em cache, podemos chamar os métodos ToList ou ToArray.
LINQ – Agrupar dados
• Podemos agrupar os resultados de uma consulta. Quando isso acontece a variável de consulta retorna um
IOrderedEnumerable< IGrouping<TKey,TElement>>
• Nestes casos a execução da consulta (foreach) é diferente, visto que o retorno da consulta é um conjunto de
grupos de dados. Cada grupo contém vários alunos.
• Neste exemplo, agrupamos os alunos pela primeira letra do primeiro nome e ordenamos o grupo de forma
ascendente.
• O primeiro foreach percorre o resultado da consulta (grupos), e o segundo foreach percorre os elementos de
cada grupo
Output
Bibliografia
• [Link]
guide/concepts/linq/getting-started-with-linq