Início > C# > Expression e Linq

Expression e Linq

22 de janeiro de 2010 Deixe um comentário Go to comments
Boa noite, (comecei, agora não consigo parar de postar.. rs)
 
Hoje estava lendo meus e-mails (que por sinal são muitos) quando encontrei um e-mail de um companheiro que acompanha o blog, no e-mail ele dizia que estava com uma dúvida, sobre a utilização de expression no linq, pois ele estava fazendo um acesso ao Entity Framework, como achei oportuno a duvida, vou mostrar aqui um breve exemplo de como fazer isso:
 
Primeiramente, uma rápida introdução ao Linq: O Language Integrated Query ou o Linq como é conhecido, é um recurso do .Net Framework que permite a realização de consultas em coleção de dados, conjunto de dados etc.. (resumo), eu falei um pouco dele, então se tiver curiosidade basta acessar aqui.
  
Agora que você se tornou um especialista em Linq, imagine a seguinte situação você precisa montar uma pesquisa por idade e nome de uma pessoa, uma das formas de se fazer é a seguinte:
 

var pessoa1 = from pessoa in listaPessoa

               where (pessoa.Idade == 10 && pessoa.Nome == "João")

               select pessoa;

 

Agora vamos fazer o seguinte, iremos criar um método que em vez de montar a consulta, ele apenas receba a mesma, como fazer isso ?!! Para isso iremos utilizar o recurso da Expression. Como ficaria ??!!.
 
 
Veja:
Módulo Repository:

public List<Pessoa> BuscarPessoa(Expression<Func<Pessoa, bool>> expressao)

{

     using (var PE = new NBSolutionEntities())

     {

        return PE.Menu.Where(expressao).ToList();

     }

}

 
Módulo Business:

public List<Pessoa> BuscarPessoa(int idade, string nome)

{

   return new Repository().Buscarpessoa(p => p.Idade == idade && p.Nome == nome);

}

 
Módulo Presentation:

private void Form1_Load(object sender, EventArgs e)

{

   string nome = "Nelson"

   int idade = 24;

   List<Pessoa> pessoas = new Business().BuscarPessoa(idade, nome);

}

 

Veja que no código, no método do Repository definimos sua assinatura como uma expression que é passada pela Business, ou seja podemos passar qualquer expressão para o Repository que ela será irá passar estas instruções para o BD, seria possível também utilizar uma estrutura de IDictionary na consulta, sim seria, por isso este exemplo é apenas mais uma forma de se fazer, apesar de bem simples acredito que ele seja bem funcional quando queremos reaproveitar código.

Bom espero ter sido util,

Abraço,

 

Categorias:C#
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: