在没有 lambda 表达式的情况下两次加入相同的 table 输出不相同

join same table twice time without lambda expression output is not same

我有 2 个 LINQ 查询,第一个是 lambda 表达式,第二个只是标准 LINQ。我想在两者中获得相同的输出,但第二个查询没有给我输出。

我该如何解决这个问题以及加入 table 2 次的逻辑是什么?

 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
             });

嗯,

pedu.classNum equals defaultclass.classNum 

不是

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

IOW,您在第二次连接中使用了不同的密钥。