Introdução ao LINQ

Post on 10-May-2015

1.212 views 2 download

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

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

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