在没有 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,您在第二次连接中使用了不同的密钥。
我有 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,您在第二次连接中使用了不同的密钥。