Home > Software design >  join same table twice time without lambda expression output is not same
join same table twice time without lambda expression output is not same

Time:03-11

I have 2 queries with LINQ first one is lambda expression and second is only standard LINQ. I want to get the same output in both, but the 2nd query doesn't give me an output.

How I can solve this and what is the logic of joining a table 2 times?

 var query1 = _context.UserEdu.Where(x => x.personId == id && x.status ==PersonEducationStatus.SA.ToString())
                        .Join(_context.Educations.Where(x => x.statusCode == ACTIVE), pe => pe.classNum, s => s.classNum, (pe, class) => class)
                        .Join(_context.Educations.Where(x => x.isActive), s => s.eduNum, defaultS => defaultS.eduNum, (class, defaultclass) => new
                        { class, defaultclass.classNum })
                        .Join(_context.EducationDocument.Where(...),
                        s => s.classNum,
                        rd => rd.entity_id,
                        (class, rd) => new
                        {
                            ... output 
                        });
   

    var query2 = (from pedu in _context.UserEdu.Where(x => x.personId == id && x.status == PersonEducationStatus.SA.ToString())
             join class in _context.Educations.Where(x => x.statusCode == ACTIVE) on pedu.classNum equals class.classNum
             join defaultclass in _context.Educations.Where(x => x.isActive) on pedu.classNum equals defaultclass.classNum 
             join rd in _context.EducationDocument.Where(...) on defaultclass.classNum equals rd.entity_id
             select new
             {
                ... output same with first query
             });

CodePudding user response:

Well,

pedu.classNum equals defaultclass.classNum 

Is not

s => s.eduNum, defaultS => defaultS.eduNum

IOW, you have used in second join different keys.

  • Related