SlideShare una empresa de Scribd logo
1 de 26
Introdução ao LINQ Everton Coimbra de Araújo everton@utfpr.edu.br http://pptinformatica.com.br/wordpress http://twitter.com/evertonfoz Fábio Augusto Pandolfo fabiopand@gmail.com http://dotando.blogspot.com http://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 IEnumerable – executada parta por parte IQueryable – executada de uma só vez where select Execute Execute where select Capture & Execute
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”;  //string 		var i = 100; //int 		var 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 a 		WHERE      a.Id != 0 		ORDER 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

Más contenido relacionado

La actualidad más candente

Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em ElixirAdolfo Neto
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonOsvaldo Santana Neto
 
Erlang e Elixir por uma web mais feliz
Erlang e Elixir por uma web mais felizErlang e Elixir por uma web mais feliz
Erlang e Elixir por uma web mais felizBruno Henrique - Garu
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...Rogério Moraes de Carvalho
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de ProgramaçãoNatanael Simões
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Uma linguagem para chamar de minha: Criando DSLs no dia a dia - QConRio2015
Uma linguagem para chamar de minha: Criando DSLs no dia a dia - QConRio2015Uma linguagem para chamar de minha: Criando DSLs no dia a dia - QConRio2015
Uma linguagem para chamar de minha: Criando DSLs no dia a dia - QConRio2015Jacqueline Abreu
 

La actualidad más candente (10)

Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em Elixir
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o Python
 
Csharp
CsharpCsharp
Csharp
 
Erlang e Elixir por uma web mais feliz
Erlang e Elixir por uma web mais felizErlang e Elixir por uma web mais feliz
Erlang e Elixir por uma web mais feliz
 
Mulheres desenvolvendo C#
Mulheres desenvolvendo C#Mulheres desenvolvendo C#
Mulheres desenvolvendo C#
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
 
Linguagem Delphi-Introdução
Linguagem Delphi-IntroduçãoLinguagem Delphi-Introdução
Linguagem Delphi-Introdução
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de Programação
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Uma linguagem para chamar de minha: Criando DSLs no dia a dia - QConRio2015
Uma linguagem para chamar de minha: Criando DSLs no dia a dia - QConRio2015Uma linguagem para chamar de minha: Criando DSLs no dia a dia - QConRio2015
Uma linguagem para chamar de minha: Criando DSLs no dia a dia - QConRio2015
 

Similar a Introdução ao LINQ

Planode Aula
Planode AulaPlanode Aula
Planode Aulasofteam
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012Luís Cobucci
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPLorranna Machado
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...JP Clementi
 
Potfólio de Evidências
Potfólio de EvidênciasPotfólio de Evidências
Potfólio de EvidênciasPaulo Sateles
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosRafael Chaves
 
Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livreelliando dias
 
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...Rogério Moraes de Carvalho
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 
T@rget trust linq - language integrated query
T@rget trust   linq - language integrated queryT@rget trust   linq - language integrated query
T@rget trust linq - language integrated queryTargettrust
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Carl Edwin
 
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java MonografiaREST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java MonografiaCarl Edwin Antonio Nascimento
 
Apostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETApostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETJosé Corrêa Viana
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaCharles Jungbeck
 
apostila-desenvolvimento-asp-net
 apostila-desenvolvimento-asp-net apostila-desenvolvimento-asp-net
apostila-desenvolvimento-asp-netSandra Rocha
 

Similar a Introdução ao LINQ (20)

Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHP
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
 
Potfólio de Evidências
Potfólio de EvidênciasPotfólio de Evidências
Potfólio de Evidências
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livre
 
Spring Data Neo4j
Spring Data Neo4jSpring Data Neo4j
Spring Data Neo4j
 
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
T@rget trust linq - language integrated query
T@rget trust   linq - language integrated queryT@rget trust   linq - language integrated query
T@rget trust linq - language integrated query
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
 
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java MonografiaREST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
 
Apostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETApostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NET
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 
apostila-desenvolvimento-asp-net
 apostila-desenvolvimento-asp-net apostila-desenvolvimento-asp-net
apostila-desenvolvimento-asp-net
 

Introdução ao LINQ

  • 1. Introdução ao LINQ Everton Coimbra de Araújo everton@utfpr.edu.br http://pptinformatica.com.br/wordpress http://twitter.com/evertonfoz Fábio Augusto Pandolfo fabiopand@gmail.com http://dotando.blogspot.com http://twitter.com/fabiopand
  • 2. Objetivos Fazer uma introdução conceitual e prática das tecnologias necessárias para a utilização do LINQ.
  • 3. Agenda Visão geral sobre o LINQ Breve histórico Arquitetura Evoluções de linguagem
  • 4. 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).
  • 5. 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)
  • 6. Oque consultar com o LINQ? Praticamente tudo LINQ to Objects (IEnumerable and IQueryable) LINQ to XML LINQ to Entities Várias outras implementações
  • 8. IEnumerable e IQueryable IEnumerable – executada parta por parte IQueryable – executada de uma só vez where select Execute Execute where select Capture & Execute
  • 9. Object Initializers Permitem inicializar objetos de forma rápida e compacta
  • 10. Collection Initializers Maneira simples de setar valores em coleções
  • 11. Object e Collection Initializers
  • 12. 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”; //string var i = 100; //int var d = 100.5; //double
  • 13. Implicitly Typed Local Variables (var)
  • 14. 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”}
  • 16. Extension Methods Permitem estender as funcionalidades de outra classe O namespace correto precisa ser referenciado Muito útil em classes Sealed
  • 18. 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”)
  • 20. Query Expressions Parecido com SQL (Structured Query Language) Exemplo: SELECT a.* FROM alunos a WHERE a.Id != 0 ORDER BY a.Nome var resultado = from a in Alunos where a.Id != 0 orderby a.Nome select a;
  • 22. 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)
  • 24. 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
  • 25. 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
  • 26. 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