Introdução ao LINQ

26
Introdução ao LINQ Everton Coimbra de Araújo [email protected] http://pptinformatica.com.br/wordpress http://twitter.com/evertonfoz Fábio Augusto Pandolfo [email protected] http://dotando.blogspot.com http://twitter.com/fabiopand

description

Introdução do LINQ, um componente do .NET que disponibiliza mecanismos para efetuar consultas de propósito geral, com uma sintaxe parecida a da SQL.

Transcript of Introdução ao LINQ

Page 1: 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

Page 2: Introdução ao LINQ

Objetivos

• Fazer uma introdução conceitual e prática das tecnologias necessárias para a utilização do LINQ.

Page 3: Introdução ao LINQ

Agenda

• Visão geral sobre o LINQ• Breve histórico• Arquitetura• Evoluções de linguagem

Page 4: Introdução ao LINQ

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).

Page 5: Introdução ao LINQ

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)

Page 6: Introdução ao LINQ

Oque consultar com o LINQ?

• Praticamente tudo– LINQ to Objects (IEnumerable and IQueryable)

– LINQ to XML– LINQ to Entities– Várias outras implementações

Page 7: Introdução ao LINQ

Arquitetura

Page 8: Introdução ao LINQ

IEnumerable e IQueryable

Execute Execute

where select

where

select

Capture & Execute

• IEnumerable – executada parta por parte

• IQueryable – executada de uma só vez

Page 9: Introdução ao LINQ

Object Initializers

• Permitem inicializar objetos de forma rápida e compacta

Page 10: Introdução ao LINQ

Collection Initializers

• Maneira simples de setar valores em coleções

Page 11: Introdução ao LINQ

Object e Collection Initializers

Page 12: Introdução ao LINQ

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

Page 13: Introdução ao LINQ

Implicitly Typed Local Variables (var)

Page 14: Introdução ao LINQ

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”}

Page 15: Introdução ao LINQ

Anonymous Types

Page 16: Introdução ao LINQ

Extension Methods

• Permitem estender as funcionalidades de outra classe

• O namespace correto precisa ser referenciado• Muito útil em classes Sealed

Page 17: Introdução ao LINQ

Extension Methods

Page 18: Introdução ao LINQ

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”)

Page 19: Introdução ao LINQ

Lambda Expressions

Page 20: Introdução ao LINQ

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;

Page 21: Introdução ao LINQ

Query Expressions

Page 22: Introdução ao LINQ

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)

Page 23: Introdução ao LINQ

Query Operators

Page 24: Introdução ao LINQ

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

Page 25: Introdução ao LINQ

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

Page 26: Introdução ao LINQ

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