SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
Entenda LINQ (Language-Integrated
Query) e sua sintaxe na linguagem C#
Rogério Moraes de Carvalho
VITA Informática
http://rogeriomc.wordpress.com
@rogeriomc
Agenda
 O que é LINQ?
 Entity Framework e LINQ para Entidades
 LINQ para XML
 LINQ para Objetos
 Demonstração
 Recursos
O que é LINQ?
Objetos
<agenda>
<contato>
<nome>. . . </nome>
<email> . . . </email>
<fone/> . . . </fone>
<contato/>
. . .
</agenda>
XML
.NET LINQ (Language INtegrated Query)
C# 3.0 ou superior VB 9.0 ou superior Outras linguagens…
Bancos de dados relacionais
LINQ para
Objetos
LINQ para
SQL
LINQ para
XML
LINQ para
Entidades
LINQ para
DataSets
Entity Framework e LINQ para Entidades
Aplicação
Banco de dados
Entity Framework
from c in db.Fornecedores
where c.UF == "DF"
select s.NomeEmpresa
Consulta LINQ
db: instância de DbContext
Consulta SQL
SELECT NomeEmpresa
FROM Fornecedores
WHERE UF = 'DF'
Registros
Entidades db.SaveChanges()
DML ou Stored Procedures
db.Fornecedores.Add(f1);
f2.UF = "SP";
db.Fornecedores.Remove(f3);
INSERT INTO Fornecedores …
UPDATE Fornecedores …
DELETE FROM Fornecedores …
LINQ para XML
 O que é o LINQ para XML?
 Interface de programação XML na memória
 Integrada com .NET Language Integrated Query (LINQ)
 XML Document Object Model vs. LINQ para XML
 Também carrega o documento XML na memória
 Porém, LINQ para XML tem uma sintaxe muito mais simples
 XML DOM é um padrão W3C
 XmlReader/XmlWriter vs. LINQ para XML vs.
 Lê/gera XML rápido, somente para frente e sem cache
LINQ para Objetos
 O que é o LINQ para Objetos?
 API que permite o uso de consultas LINQ em coleções
 Do tipo IEnumerable ou IEnumerable<T>
 Nova abordagem para consulta a coleções
 No modo antigo era preciso escrever laços complexos
 Mais conciso e legível
 Fornece poderosas capacidades de filtragem,
ordenação e agrupamento com um mínimo de código
 Facilmente portado para outras fontes de dados
Demonstração
Fontes de dados
 LINQ para entidades
 Entity Framework
 LINQ para XML
 LINQ para Objetos
Operações com LINQ
 Projeção
 Filtragem
 Ordenação
 Junção
 Agrupamento
 Agregação
Recursos
 Microsoft Developer Network
 101 LINQ Samples
 MSDN Library
 LINQ (Language-Integrated Query)
 LINQ to XML
 LINQ to Objects
 Data Developer Center
 Entity Framework

Mais conteúdo relacionado

Mais de Rogério Moraes de Carvalho

TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaRogério Moraes de Carvalho
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoreRogério Moraes de Carvalho
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroRogério Moraes de Carvalho
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework CoreRogério Moraes de Carvalho
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7Rogério Moraes de Carvalho
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...Rogério Moraes de Carvalho
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Rogério Moraes de Carvalho
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Rogério Moraes de Carvalho
 
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Rogério Moraes de Carvalho
 
Uma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoUma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoRogério Moraes de Carvalho
 
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...Rogério Moraes de Carvalho
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...Rogério Moraes de Carvalho
 
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...Rogério Moraes de Carvalho
 
MVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realMVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realRogério Moraes de Carvalho
 
MVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões WebMVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões WebRogério Moraes de Carvalho
 

Mais de Rogério Moraes de Carvalho (20)

Docker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no AzureDocker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no Azure
 
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
 
Tecnologias XML e XML no SQL Server 2016
Tecnologias XML eXML no SQL Server 2016Tecnologias XML eXML no SQL Server 2016
Tecnologias XML e XML no SQL Server 2016
 
Cebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET CoreCebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET Core
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
 
Suporte XML nativo no SQL Server 2014/2016
Suporte XML nativo no SQL Server 2014/2016Suporte XML nativo no SQL Server 2014/2016
Suporte XML nativo no SQL Server 2014/2016
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
 
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
 
Uma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoUma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programação
 
`
``
`
 
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
 
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
 
MVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realMVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo real
 
MVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões WebMVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões Web
 

SQLSaturday #253 | Brasília 2013 - Entenda LINQ (Language-Integrated Query) e sua sintaxe na linguagem C#

  • 1. Entenda LINQ (Language-Integrated Query) e sua sintaxe na linguagem C# Rogério Moraes de Carvalho VITA Informática http://rogeriomc.wordpress.com @rogeriomc
  • 2. Agenda  O que é LINQ?  Entity Framework e LINQ para Entidades  LINQ para XML  LINQ para Objetos  Demonstração  Recursos
  • 3. O que é LINQ? Objetos <agenda> <contato> <nome>. . . </nome> <email> . . . </email> <fone/> . . . </fone> <contato/> . . . </agenda> XML .NET LINQ (Language INtegrated Query) C# 3.0 ou superior VB 9.0 ou superior Outras linguagens… Bancos de dados relacionais LINQ para Objetos LINQ para SQL LINQ para XML LINQ para Entidades LINQ para DataSets
  • 4. Entity Framework e LINQ para Entidades Aplicação Banco de dados Entity Framework from c in db.Fornecedores where c.UF == "DF" select s.NomeEmpresa Consulta LINQ db: instância de DbContext Consulta SQL SELECT NomeEmpresa FROM Fornecedores WHERE UF = 'DF' Registros Entidades db.SaveChanges() DML ou Stored Procedures db.Fornecedores.Add(f1); f2.UF = "SP"; db.Fornecedores.Remove(f3); INSERT INTO Fornecedores … UPDATE Fornecedores … DELETE FROM Fornecedores …
  • 5. LINQ para XML  O que é o LINQ para XML?  Interface de programação XML na memória  Integrada com .NET Language Integrated Query (LINQ)  XML Document Object Model vs. LINQ para XML  Também carrega o documento XML na memória  Porém, LINQ para XML tem uma sintaxe muito mais simples  XML DOM é um padrão W3C  XmlReader/XmlWriter vs. LINQ para XML vs.  Lê/gera XML rápido, somente para frente e sem cache
  • 6. LINQ para Objetos  O que é o LINQ para Objetos?  API que permite o uso de consultas LINQ em coleções  Do tipo IEnumerable ou IEnumerable<T>  Nova abordagem para consulta a coleções  No modo antigo era preciso escrever laços complexos  Mais conciso e legível  Fornece poderosas capacidades de filtragem, ordenação e agrupamento com um mínimo de código  Facilmente portado para outras fontes de dados
  • 7. Demonstração Fontes de dados  LINQ para entidades  Entity Framework  LINQ para XML  LINQ para Objetos Operações com LINQ  Projeção  Filtragem  Ordenação  Junção  Agrupamento  Agregação
  • 8. Recursos  Microsoft Developer Network  101 LINQ Samples  MSDN Library  LINQ (Language-Integrated Query)  LINQ to XML  LINQ to Objects  Data Developer Center  Entity Framework