LINQ e Entity Framework

Olá a todos!

Neste post vamos demonstrar algumas possibilidades de utilização da linguagem de consulta LINQ sobre um modelo conceitual do Entity Framework.

O LINQ foi introduzido a partir da versão 3.5 do Framework .NET e permite realizar consultas sobre diversas fontes de dados, como por exemplo, documentos XML, vetores, coleção de objetos, bases de dados, etc. Sua sintaxe é inspirada no SQL porém respeitando uma lógica de raciocínio que segue o princípio básico de um foreach, porem com muito mais recursos.

Basicamente toda query é montada respeitando a idéia

from…
where…
select…

Sintaxe de referência:

var dados = from elemento in lista_de_dados where clausula_consulta select elemento

Exemplo 1: Selecionando dados a partir de um vetor de strings


string[] nomes = new string[5] { "Ana Clara", "Beatriz", "Débora", "Lilian", "Ana Alice" };
var dados = from n in nomes where n.StartsWith("Ana") select n;
foreach (string reg in dados)
{
   lblDados1.Text += reg + " - ";
}

Exemplo 2: Obtendo todas as regiões cadastradas na tabela Region do BD Northwind


using (NorthwindEntities contexto = new NorthwindEntities())
{
   var dados = from regioes in contexto.Region select regioes;
   gvDados1.DataSource = dados;
   gvDados1.DataBind();

   foreach (Region reg in dados)
   {
      lblDados2.Text += reg.RegionDescription + " - ";
   }
}

Exemplo 3: Obtendo todas as regiões cadastradas na tabela Region do BD Northwind que terminem com a string “thern”


using (NorthwindEntities contexto = new NorthwindEntities())
{
   var dados = from regioes in contexto.Region
   where regioes.RegionDescription.Trim().EndsWith("thern")
   select regioes;
   gvDados2.DataSource = dados;
   gvDados2.DataBind();
}

Exemplo 4: Idéia de “junção” entre as tabelas Region e Territories do BD Northwind. Reparem que estou buscando todos os territórios que pertençam à região de nome Eastern


using (NorthwindEntities contexto = new NorthwindEntities())
{
   var dados = from territorios in contexto.Territories
   where territorios.Region.RegionDescription.Equals("Eastern")
   orderby territorios.TerritoryDescription
   select territorios;
   gvDados3.DataSource = dados;
   gvDados3.DataBind();
}

O site 101 LINQ Samples disponibiliza vários outros exemplos sobre consultas através do LINQ.

Agradecimento ao André Menegassi pelas dicas.

Posts relacionados:
1. ADO.NET Entity Framework – Introdução + Exemplo prático
2. Operações CRUD com Entity Framework

Um grande abraço,
Eduardo Henrique Rizo

[twitter-follow screen_name='eduardorizo' show_count='yes']

6 comentários em “LINQ e Entity Framework”

  1. muito bom…é possivel gerar um formulário pronto direto da tabela com todos os campos? acho que isso no Windows Form é possivel, e na Web, tem alguma maneira de fazer telas de cadastro mais rapido (no sentido de nao precisar criar os elementos e sim alguma ferramenta/propriedade do Entity ja criar).

  2. Pingback: LINQ, Entity Framework e Tipos Anônimos « Blog do Eduardo H. Rizo

  3. Pingback: WebServices, LINQ e Entity Framework (EF4) « Blog do Eduardo H. Rizo

  4. Pingback: LINQ, tipos anônimos e retorno de dados « Blog do Eduardo H. Rizo

Deixe um comentário