Introdução ao LINQ
-
Upload
fabio-pandolfo -
Category
Technology
-
view
1.212 -
download
2
description
Transcript of Introdução ao LINQ
Introdução ao LINQEverton Coimbra de Araú[email protected]://pptinformatica.com.br/wordpresshttp://twitter.com/evertonfozFábio Augusto [email protected]://dotando.blogspot.comhttp://twitter.com/fabiopand
Objetivos
• Fazer uma introdução conceitual e prática das tecnologias necessárias para a utilização do LINQ.
Agenda
• Visão geral sobre o LINQ• Breve histórico• Arquitetura• Evoluções de linguagem
Oque é o LINQ?
• O LINQ (Language Integrated Query) é um componente do .NET que disponibiliza mecanismos para efetuar consultas de propósito geral, com uma sintaxe parecida a da SQL (Structured Query Language).
Breve histórico do LINQ
• Teve seu lançamento no .NET 3.5• O .NET 3.0 introduziu um conjunto de novas
funcionalidades que viabilizaram o LINQ– Extension Methods, – Lambda Expressions, – Anonymous Types, – Implicitly Typed Local Variables (var)
Oque consultar com o LINQ?
• Praticamente tudo– LINQ to Objects (IEnumerable and IQueryable)
– LINQ to XML– LINQ to Entities– Várias outras implementações
Arquitetura
IEnumerable e IQueryable
Execute Execute
where select
where
select
Capture & Execute
• IEnumerable – executada parta por parte
• IQueryable – executada de uma só vez
Object Initializers
• Permitem inicializar objetos de forma rápida e compacta
Collection Initializers
• Maneira simples de setar valores em coleções
Object e Collection Initializers
Implicitly Typed Local Variables (var)
• O compilador determina o tipo da variável• Uma vez setada, não pode ser mudada• Exemplo:
var s = “olá mundo”; //stringvar i = 100; //intvar d = 100.5; //double
Implicitly Typed Local Variables (var)
Anonymous Types
• Permite encapsular propriedades públicas somente leitura em um único objeto, sem ter que definir explicitamente seus tipos
• Exemplo:new { Nome = “Homer”, Sobrenome=
“Simpson”}
Anonymous Types
Extension Methods
• Permitem estender as funcionalidades de outra classe
• O namespace correto precisa ser referenciado• Muito útil em classes Sealed
Extension Methods
Lambda Expressions
• Lambda Operator =>• Abreviam a criação de um delegate (forma
segura de ponteiro para função) • Não é realmente necessário compreender o
seu funcionamento• Exemplo:
alunos.Where( a => a.Nome == “Fábio”)
Lambda Expressions
Query Expressions• Parecido com SQL (Structured Query Language)
• Exemplo:SELECT a.*FROM alunos aWHERE a.Id != 0ORDER BY a.Nome
var resultado = from a in Alunos where a.Id != 0 orderby a.Nome select a;
Query Expressions
Query Operators
• São Extension Methods.• Exemplos: Select(), Where(), OrderBy(), etc.• Muitos Query Operators retornam outra
coleção (IEnumerable).• Podem ser utilizados em conjunto:
alunos.Where(aluno => aluno.Idade > 21).OrderBy(aluno => aluno.Idade)
Query Operators
Conclusões
• O LINQ oferece uma sintaxe de consulta próxima da linguagem do desenvolvedor, oque torna o desenvolvimento muito mais padronizado, gerando ganho de produtividade e facilidade de manutenção
Links interessantes• Blog - Fábio Pandolfo - Slides e recursos deste minicurso• http://dotando.blogspot.com• Blog - Andy Schwam - Consultor Independente • http://blog.ingenuitynow.net/• Artigo - Apresentando LINQ• http://www.macoratti.net/07/12/net_linq.htm• Artigo - Getting Started with LINQ in C#• http://msdn.microsoft.com/en-us/library/bb397933.aspx• Artigo - Language Integrated Query• http://en.wikipedia.org/wiki/Language_Integrated_Query• Artigo - Standard Query Operators with LINQ• http://msdn.microsoft.com/en-us/magazine/cc337893.aspx
Links interessantes• Artigo - Anonymous Types (C# Programming Guide)• http://msdn.microsoft.com/en-us/library/bb397696.aspx• Artigo - Implicitly Typed Local Variables (C# Programming Guide)• http://msdn.microsoft.com/en-us/library/bb384061.aspx• Artigo - var (C# Reference)• http://msdn.microsoft.com/en-us/library/bb383973.aspx• Artigo - Extension Methods (C# Programming Guide)• http://msdn.microsoft.com/en-us/library/bb383977.aspx• Artigo - Basic LINQ Query Operations (C#)• http://msdn.microsoft.com/en-us/library/bb397927.aspx• Artigo - LINQ Query Expressions (C# Programming Guide)• http://msdn.microsoft.com/en-us/library/bb397676.aspx