none
Lambda expression join RRS feed

  • Pergunta

  • Estou tendo um dificuldade em criar uma expressão lambda, pois todavia o mesmo ocasiona um erro, seguem uma expressão bem simples abaixo.


                   var query = cnHoras.Debites.Join(cnDebites.CodDesp, hd => hd.CODDESP, dd => dd.CODDESP1,
                        (hd, dd) => new
                        {
                            DespesaID = hd.DESPESA_ID,
                            DataDesp = hd.DATADESP,
                            Despesa = hd.DESPESA,
                            Obs = hd.OBS,
                            Cdcli = hd.CODCLI
                        }).Where(x => x.Cdcli == "1");

    quinta-feira, 5 de junho de 2014 17:35

Respostas

  • Amigo, a mensagem diz que você está tentando fazer um join com dois contextos diferentes, isto é válido?

    Se for, não é suportado pelo LINQ...

    • Marcado como Resposta _Manigold_ sexta-feira, 6 de junho de 2014 12:52
    quinta-feira, 5 de junho de 2014 18:10
  • Olá Vinicius, na verdade esse join que estou tentando fazer, são de 2 bds ?

    Belamente não é possível ?

    muito obrigado.

     Olá, o Linq não suporta dois contexto, o que pode fazer é uma Stored Procedure ou uma consulta em cada contexto e fazer o Join no seu softtare não diretamente no SQL ! 

      Creio que se for muitos dados o melhor seria em uma SP mesmo !

    • Marcado como Resposta _Manigold_ sexta-feira, 6 de junho de 2014 12:52
    quinta-feira, 5 de junho de 2014 18:37
  • Muito obrigado, apesar de não ser performático , ajudou .

    • Marcado como Resposta _Manigold_ sexta-feira, 6 de junho de 2014 17:27
    sexta-feira, 6 de junho de 2014 17:27

Todas as Respostas

  • Clique no link "View Details..." e posta o erro que está no campo Inner Exception para sabermos qual Exception foi lançada.
    quinta-feira, 5 de junho de 2014 17:54
  • quinta-feira, 5 de junho de 2014 18:01
  • Esta nulo muito obrigado.
    quinta-feira, 5 de junho de 2014 18:01
  • Amigo, a mensagem diz que você está tentando fazer um join com dois contextos diferentes, isto é válido?

    Se for, não é suportado pelo LINQ...

    • Marcado como Resposta _Manigold_ sexta-feira, 6 de junho de 2014 12:52
    quinta-feira, 5 de junho de 2014 18:10
  • Olá Vinicius, na verdade esse join que estou tentando fazer, são de 2 bds ?

    Realmente não é possível ?

    muito obrigado.



    • Editado _Manigold_ quinta-feira, 5 de junho de 2014 18:37
    quinta-feira, 5 de junho de 2014 18:31
  • Olá Vinicius, na verdade esse join que estou tentando fazer, são de 2 bds ?

    Belamente não é possível ?

    muito obrigado.

     Olá, o Linq não suporta dois contexto, o que pode fazer é uma Stored Procedure ou uma consulta em cada contexto e fazer o Join no seu softtare não diretamente no SQL ! 

      Creio que se for muitos dados o melhor seria em uma SP mesmo !

    • Marcado como Resposta _Manigold_ sexta-feira, 6 de junho de 2014 12:52
    quinta-feira, 5 de junho de 2014 18:37
  • É exatamente o que o Daniel disse acima... 

    Qual a necessidade de se usar dois contexto? Se quiser fazer isso, o jeito é uma SP mesmo...

    quinta-feira, 5 de junho de 2014 18:44
  • Olá Daniel, achei uma solução, mas a empresa trabalha com vários banco.

    quinta-feira, 5 de junho de 2014 19:24
  • Olá Daniel, achei uma solução, mas a empresa trabalha com vários banco.

     Não entendi, qual solução ?
    quinta-feira, 5 de junho de 2014 19:32
  •      public void Despesas(int codigo)
            {
                var cnDebites = new DebitesEntities();
                var cnCausas = new CausasEntities();
                var cnHoras = new HorasEntities();

                var horas = new List<Debites>(cnHoras.Debites);
                var debites = new List<CodDesp>(cnDebites.CodDesp);

                var results = from c in horas
                              join d in debites on c.CODDESP equals d.CODDESP1
                              select new { c.DESPESA, d.CODDESP1,d.DESPDES};

                foreach (var item in results)
                {
                    int x = item.CODDESP1;
                    string y = item.DESPDES;

                }



            }

    Gostaria de colocar uma expressão lambda e não Linq , existe a possibilidade ?

                                   
    • Editado _Manigold_ quinta-feira, 5 de junho de 2014 19:33
    quinta-feira, 5 de junho de 2014 19:33
  • var results = seu_contexto.horas.Join(seu_contexto.debites, t1 =>t1.coddesp, t2.coddesp1,(t1,t2) => new {t1,t2})

    .Select(i => i.t1.DESPESA, i.t2.CODDESP1, i.t2.DESPDES)

                foreach (var item in results)
                {
                    int x = item.CODDESP1;
                    string y = item.DESPDES;

                }

    Essa é sua lambda expression

    quinta-feira, 5 de junho de 2014 20:45
  • Olá amigo infelizmente não funfa, pois não é possível trabalhar com contexto diferentes.

    Muito obrigado pela ajuda.

    sexta-feira, 6 de junho de 2014 12:52
  • Cara, é possível sim.  Veja esse exemplo em outro forum.
    sexta-feira, 6 de junho de 2014 16:17
  • Muito obrigado, apesar de não ser performático , ajudou .

    • Marcado como Resposta _Manigold_ sexta-feira, 6 de junho de 2014 17:27
    sexta-feira, 6 de junho de 2014 17:27