Usuário com melhor resposta
Left join com linq to entity

Pergunta
-
Como eu faço para que a tabela triagens seja a tabela do left na consulta abaixo?
var pesquisa = (from m in triagens
join c in cadastros on m.id_triagem equals c.id_triagem
join t in tarefas on c.id_cadastro equals t.id_cadastro
where m.nm_autor.StartsWith(_filtro) && m.tarefa.Equals("Realizar Cadastro")
select new { m.id_triagem, m.nm_autor, m.cpf_autor, m.num_doc, m.tarefa })
.ToList();
Respostas
-
O seu segundo exemplo esta correto, porem você não usa em lugar o left, apenas faz e não utiliza, exemplo:
var pesquisa = (from m in triagens join c in cadastros on m.id_triagem equals c.id_triagem into mCad from c in mCad.DefaultIfEmpty() //join t in tarefas on c.id_cadastro equals t.id_cadastro where m.nm_autor.StartsWith(_filtro) && m.tarefa.Equals("Realizar Cadastro") select new { m.id_triagem, m.nm_autor, m.cpf_autor, m.num_doc, m.tarefa, cadastro = mCad != null ? mCad : null }) .ToList();
Ou seja, a propriedade cadastro só vai estar preenchida, se a triagem possuir um "cadastro" vinculado, caso contrario sera nulo.
Veja este link depois se possível:
http://codingsense.wordpress.com/2009/03/08/left-join-right-join-using-linq/Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/- Marcado como Resposta pnet terça-feira, 30 de abril de 2013 18:06
Todas as Respostas
-
seu fizer isso, dáa impressão que é a tabela de cadastros no left e não a triagens. Serà?
var pesquisa = (from m in triagens
join c in cadastros on m.id_triagem equals c.id_triagem into mLeft
from c in mLeft.DefaultIfEmpty()
//join t in tarefas on c.id_cadastro equals t.id_cadastro
where m.nm_autor.StartsWith(_filtro) && m.tarefa.Equals("Realizar Cadastro")
select new { m.id_triagem, m.nm_autor, m.cpf_autor, m.num_doc, m.tarefa })
.ToList(); -
O seu segundo exemplo esta correto, porem você não usa em lugar o left, apenas faz e não utiliza, exemplo:
var pesquisa = (from m in triagens join c in cadastros on m.id_triagem equals c.id_triagem into mCad from c in mCad.DefaultIfEmpty() //join t in tarefas on c.id_cadastro equals t.id_cadastro where m.nm_autor.StartsWith(_filtro) && m.tarefa.Equals("Realizar Cadastro") select new { m.id_triagem, m.nm_autor, m.cpf_autor, m.num_doc, m.tarefa, cadastro = mCad != null ? mCad : null }) .ToList();
Ou seja, a propriedade cadastro só vai estar preenchida, se a triagem possuir um "cadastro" vinculado, caso contrario sera nulo.
Veja este link depois se possível:
http://codingsense.wordpress.com/2009/03/08/left-join-right-join-using-linq/Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/- Marcado como Resposta pnet terça-feira, 30 de abril de 2013 18:06