none
Dúvida e Dificuldade com LEFT JOIN usando LAMBDA EXPRESSION RRS feed

  • Pergunta

  • Bom  dia pessoal , estou com uma grande dúvida e dificuldade de implementar um left join com expression lambda Vejam meu cenário :

     public class Curso
        {
    
            public int IdCurso { get; set; }
            public int? IdTipoCurso { get; set; }
            public string Nome { get; set; }
    
           
        }
    
        public class TipoCurso
        {
            public int IdTipoCurso { get; set; }
            public string Tipo { get; set; }
    
        }

    no código acima estou simulando uma tabela de curso e tipo curso abaixo vejam o preenchimento delas :

    List<TipoCurso> lstTipoCurso = new List<TipoCurso>{ 
                                                                    
                                                                    new TipoCurso{ IdTipoCurso=1, Tipo = "WEB" },
                                                                    new TipoCurso{IdTipoCurso=2 , Tipo = "Desktop"},
                                                                    new TipoCurso{IdTipoCurso=3, Tipo="Movél"}
                                                                    
                                                                    };
    
                List<Curso> lstCurso = new List<Curso> {
     
                                                    new Curso{ IdCurso= 1 , IdTipoCurso = 1 , Nome = "C#"},
                                                    new Curso{ IdCurso = 2 , IdTipoCurso = 1, Nome = "VB.Net"},
                                                  new Curso{ IdCurso= 3 , IdTipoCurso = 3 , Nome = "Android com C#"},
                                                    new Curso{ IdCurso= 4 , IdTipoCurso = null, Nome = "Hacker"},
                                                    new Curso{ IdCurso= 5 , IdTipoCurso = null , Nome = "Hardware"}
                                                   
                
                                                  };

    Bom o fato agora é que estou tentando usar left join da seguinte maneira  :

                var ListaGeral = lstCurso.GroupJoin(lstTipoCurso, C => C.IdTipoCurso, T => T.IdTipoCurso, (C, T) => new { C , T })
                                         .SelectMany(n => n.T.DefaultIfEmpty() ,(C,T) => new { C.C.Nome , T.Tipo})
                                         .ToList();
    
                foreach (var Cur in ListaGeral)
                {
    
    
                    Console.WriteLine("Curso : {0} , Tipo : {1} ", Cur.Nome, Cur.Tipo);
    
                }
    

    Esse código acima não funciona como o esperado e dá erro de object no referenciado , ou seja não consegue instaciar a classe TipoCurso . Se eu  comento as linhas :

    //new Curso{ IdCurso= 4 , IdTipoCurso = null, Nome = "Hacker"},
    //new Curso{ IdCurso= 5 , IdTipoCurso = null , Nome = "Hardware"}

    Funciona perfeitamente como JOIN , mas quando volto as linhas dá erro .

    O esperado é que lista todos os cursos independente de ter ou não tipo , realmente como seria um left join. Se puderem me ajudar agradeço desde já. 


    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br

    sexta-feira, 12 de abril de 2013 12:05

Respostas

Todas as Respostas