Introdução ao LINQEverton Coimbra de Araújoeverton@utfpr.edu.brhttp://pptinformatica.com.br/wordpresshttp://twitter.com/evertonfozFábio Augusto Pandolfofabiopand@gmail.comhttp://dotando.blogspot.comhttp://twitter.com/fabiopand
ObjetivosFazer uma introdução conceitual e prática das tecnologias necessárias para a utilização do LINQ.
AgendaVisão geral sobre o LINQBreve históricoArquiteturaEvoluçõ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 LINQTeve seu lançamento no .NET 3.5O .NET 3.0 introduziu um conjunto de novas funcionalidades que viabilizaram o LINQExtension Methods, Lambda Expressions, Anonymous Types, Implicitly Typed Local Variables (var)
Oque consultar com o LINQ?Praticamente tudoLINQ to Objects (IEnumerable and IQueryable)LINQ to XMLLINQ to EntitiesVárias outras implementações
Arquitetura
IEnumerable e IQueryableIEnumerable – executada parta por parteIQueryable – executada de uma só vezwhereselectExecuteExecutewhereselectCapture & Execute
Object InitializersPermitem inicializar objetos de forma rápida e compacta
Collection InitializersManeira simples de setar valores em coleções
Object e Collection Initializers
Implicitly Typed Local Variables (var)O compilador determina o tipo da variávelUma vez setada, não pode ser mudadaExemplo:		var s = “olá mundo”;  //string		var i = 100; //int		var d = 100.5; //double
Implicitly Typed Local Variables (var)
Anonymous TypesPermite encapsular propriedades públicas somente leitura em um único objeto, sem ter que definir explicitamente seus tiposExemplo:		new { Nome = “Homer”, Sobrenome= 			“Simpson”}
Anonymous Types
Extension MethodsPermitem estender as funcionalidades de outra classeO namespace correto precisa ser referenciadoMuito útil em classes Sealed
Extension Methods
Lambda ExpressionsLambda Operator 	=>Abreviam a criação de um delegate (forma segura de ponteiro para função) Não é realmente necessário compreender o seu funcionamentoExemplo:		alunos.Where( a => a.Nome == “Fábio”)
Lambda Expressions
Query ExpressionsParecido 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 OperatorsSã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õesO 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 interessantesBlog - Fábio Pandolfo - Slides e recursos deste minicursohttp://dotando.blogspot.comBlog - Andy Schwam - Consultor Independente http://blog.ingenuitynow.net/Artigo - Apresentando LINQhttp://www.macoratti.net/07/12/net_linq.htmArtigo - Getting Started with LINQ in C#http://msdn.microsoft.com/en-us/library/bb397933.aspxArtigo - Language Integrated Queryhttp://en.wikipedia.org/wiki/Language_Integrated_QueryArtigo - Standard Query Operators with LINQhttp://msdn.microsoft.com/en-us/magazine/cc337893.aspx
Links interessantesArtigo - Anonymous Types (C# Programming Guide)http://msdn.microsoft.com/en-us/library/bb397696.aspxArtigo - Implicitly Typed Local Variables (C# Programming Guide)http://msdn.microsoft.com/en-us/library/bb384061.aspxArtigo - var (C# Reference)http://msdn.microsoft.com/en-us/library/bb383973.aspxArtigo - Extension Methods (C# Programming Guide)http://msdn.microsoft.com/en-us/library/bb383977.aspxArtigo - Basic LINQ Query Operations (C#)http://msdn.microsoft.com/en-us/library/bb397927.aspxArtigo - LINQ Query Expressions (C# Programming Guide)http://msdn.microsoft.com/en-us/library/bb397676.aspx

Introdução ao LINQ

  • 1.
    Introdução ao LINQEvertonCoimbra de Araújoeverton@utfpr.edu.brhttp://pptinformatica.com.br/wordpresshttp://twitter.com/evertonfozFábio Augusto Pandolfofabiopand@gmail.comhttp://dotando.blogspot.comhttp://twitter.com/fabiopand
  • 2.
    ObjetivosFazer uma introduçãoconceitual e prática das tecnologias necessárias para a utilização do LINQ.
  • 3.
    AgendaVisão geral sobreo LINQBreve históricoArquiteturaEvoluções de linguagem
  • 4.
    Oque é oLINQ?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 doLINQTeve seu lançamento no .NET 3.5O .NET 3.0 introduziu um conjunto de novas funcionalidades que viabilizaram o LINQExtension Methods, Lambda Expressions, Anonymous Types, Implicitly Typed Local Variables (var)
  • 6.
    Oque consultar como LINQ?Praticamente tudoLINQ to Objects (IEnumerable and IQueryable)LINQ to XMLLINQ to EntitiesVárias outras implementações
  • 7.
  • 8.
    IEnumerable e IQueryableIEnumerable– executada parta por parteIQueryable – executada de uma só vezwhereselectExecuteExecutewhereselectCapture & Execute
  • 9.
    Object InitializersPermitem inicializarobjetos de forma rápida e compacta
  • 10.
    Collection InitializersManeira simplesde setar valores em coleções
  • 11.
  • 12.
    Implicitly Typed LocalVariables (var)O compilador determina o tipo da variávelUma vez setada, não pode ser mudadaExemplo: var s = “olá mundo”; //string var i = 100; //int var d = 100.5; //double
  • 13.
    Implicitly Typed LocalVariables (var)
  • 14.
    Anonymous TypesPermite encapsularpropriedades públicas somente leitura em um único objeto, sem ter que definir explicitamente seus tiposExemplo: new { Nome = “Homer”, Sobrenome= “Simpson”}
  • 15.
  • 16.
    Extension MethodsPermitem estenderas funcionalidades de outra classeO namespace correto precisa ser referenciadoMuito útil em classes Sealed
  • 17.
  • 18.
    Lambda ExpressionsLambda Operator =>Abreviam a criação de um delegate (forma segura de ponteiro para função) Não é realmente necessário compreender o seu funcionamentoExemplo: alunos.Where( a => a.Nome == “Fábio”)
  • 19.
  • 20.
    Query ExpressionsParecido comSQL (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;
  • 21.
  • 22.
    Query OperatorsSão ExtensionMethods.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)
  • 23.
  • 24.
    ConclusõesO LINQ ofereceuma 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 interessantesBlog -Fábio Pandolfo - Slides e recursos deste minicursohttp://dotando.blogspot.comBlog - Andy Schwam - Consultor Independente http://blog.ingenuitynow.net/Artigo - Apresentando LINQhttp://www.macoratti.net/07/12/net_linq.htmArtigo - Getting Started with LINQ in C#http://msdn.microsoft.com/en-us/library/bb397933.aspxArtigo - Language Integrated Queryhttp://en.wikipedia.org/wiki/Language_Integrated_QueryArtigo - Standard Query Operators with LINQhttp://msdn.microsoft.com/en-us/magazine/cc337893.aspx
  • 26.
    Links interessantesArtigo -Anonymous Types (C# Programming Guide)http://msdn.microsoft.com/en-us/library/bb397696.aspxArtigo - Implicitly Typed Local Variables (C# Programming Guide)http://msdn.microsoft.com/en-us/library/bb384061.aspxArtigo - var (C# Reference)http://msdn.microsoft.com/en-us/library/bb383973.aspxArtigo - Extension Methods (C# Programming Guide)http://msdn.microsoft.com/en-us/library/bb383977.aspxArtigo - Basic LINQ Query Operations (C#)http://msdn.microsoft.com/en-us/library/bb397927.aspxArtigo - LINQ Query Expressions (C# Programming Guide)http://msdn.microsoft.com/en-us/library/bb397676.aspx