domingo, 6 de março de 2011

Select IN com LINQ + Entity Framework

 

Me deparei com uma duvida: Como fazer um Select IN com o Linq?

Seria isso possível? Ou seria esta mais uma das funcionalidades da próxima versão?

Pois bem, fui pesquisar e descobri uma maneira bastante eficiente e na minha visão muito melhor do que aquelas gambiarras feitas em stored procedures. Vejam como é simples:

Para que não restem duvidas, estou falando de fazer assim no SQL:

   1: select * from Produto where IdCatecoria in (1,2,3)



E com o Linq e ainda usando o Microsoft Entity Framework ficou assim:



   1: var categorias = new int[] { 1, 2, 3 };
   2: using (var db = new Model.bdEntities(_connectionString))
   3: {
   4:    var query = from p in db.Produtos
   5:                where categorias.Contains(p.cod_categoria)
   6:                select p;
   7:     var ListaFinal = query.ToList();
   8: }

Se você ligar o trace do banco de dados irá ver que o comando sql foi algo assim:



   1: SELECT [t0].[IDProduto], [t0].[Descricao], [t0].[Valor], [t0].[cod_categoria]
   2: FROM [dbo].[Produtos] AS [t0]
   3: WHERE [t0].[cod_categoria] IN (@p0, @p1, @p2)
   4:  
   5:  

Gostou? Não gostou? Comenta ai!

Nenhum comentário:

Postar um comentário