Usuário com melhor resposta
Linq

Pergunta
-
Galera como posso transformar a query abaixo em linq ?
select campanha.CampanhaId, blog.Id, blog.Conteudo, blog.Titulo, imagem.NomeArquivo, imagem.NomeThumb from dbo.TB_Blog as blog left join TB_BlogCampanha as campanha on campanha.BlogId = blog.Id left join TB_BlogImagem as blogImagem on campanha.BlogId = blogImagem.BlogId left join dbo.TB_Imagem as imagem on imagem.Id = blogImagem.BlogId where campanha.CampanhaId = 1 group by campanha.CampanhaId, blog.Id, blog.Conteudo, blog.Titulo, imagem.Id, imagem.NomeArquivo, imagem.NomeThumb
Obrigado
SirSmart
Respostas
-
Olá, veja se este exemplo com LEFT JOIN e GroupBy lhe ajuda : (Com lambda que seria mais simples)
Veja como é feito o LEFT usando o GroupJoin e SELECTMANY depois viria o where normal agrupado e selecionando o campo que deseja.var sql = db.TB1 .GroupJoin(db.TB1, T1 => T1.ID, T2 => T2.ID, (T1, T2) => new { T1, T2 = T2.Where(i => i.IDTESTE == TESTE) }) .SelectMany(s => s.T2.DefaultIfEmpty(), (S, T2) => new { T1 = S.T1, T2 = T2 }) .Where(o => o.T1.TABELA == _tabela) .GroupBy(g => new { SEUCAMPO = g.T1.CAMPO})
.Select(s => s.Key.SEUCAMPO).ToList();
- Marcado como Resposta SirSmart quinta-feira, 17 de abril de 2014 17:51
Todas as Respostas
-
Olá, veja se este exemplo com LEFT JOIN e GroupBy lhe ajuda : (Com lambda que seria mais simples)
Veja como é feito o LEFT usando o GroupJoin e SELECTMANY depois viria o where normal agrupado e selecionando o campo que deseja.var sql = db.TB1 .GroupJoin(db.TB1, T1 => T1.ID, T2 => T2.ID, (T1, T2) => new { T1, T2 = T2.Where(i => i.IDTESTE == TESTE) }) .SelectMany(s => s.T2.DefaultIfEmpty(), (S, T2) => new { T1 = S.T1, T2 = T2 }) .Where(o => o.T1.TABELA == _tabela) .GroupBy(g => new { SEUCAMPO = g.T1.CAMPO})
.Select(s => s.Key.SEUCAMPO).ToList();
- Marcado como Resposta SirSmart quinta-feira, 17 de abril de 2014 17:51
-
Existe um programa chamado Linqer que converte instruções SQL em LINQ.
http://www.sqltolinq.com/downloads
eu utilizo e é muito bom, recomendo.