none
Left join com linq to entity RRS feed

  • 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();
    segunda-feira, 29 de abril de 2013 13:49

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
    segunda-feira, 29 de abril de 2013 16:34

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();
    segunda-feira, 29 de abril de 2013 14:17
  • 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
    segunda-feira, 29 de abril de 2013 16:34