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']
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).
A maneira mais tradicional é usar o FormView e o DetailsView do ASP.NET.
Humm…vou tentar usá-los…Obrigado.
Pingback: LINQ, Entity Framework e Tipos Anônimos « Blog do Eduardo H. Rizo
Pingback: WebServices, LINQ e Entity Framework (EF4) « Blog do Eduardo H. Rizo
Pingback: LINQ, tipos anônimos e retorno de dados « Blog do Eduardo H. Rizo