EF 6使用子查询结果加入表

时间:2018-05-16 03:00:08

标签: entity-framework-6

我有以下SQL查询

select M.* from Department M
join 
    (select StudentId,max(Created) Created from Department
    where Type = 'New'
    group by StudentId
    ) 
    A
on M.StudentId= A.StudentId AND M.Created = A.Created

为此我创建了以下EF linq

(from mmfcl in _Context.Department
      join filtermmfcl in ( _Context.Department
                           .Where(mmfcl => mmfcl.Type == "New")
                           .GroupBy(mmfcl => mmfcl.StudentId)
                           .Select(mmfcl => new 
                           {
                              StudentId= mmfcl.Key,
                              Date = mmfcl.Max(cl => cl.Created)
                           }).ToList()
                          )
     on new { mmfcl.StudentId, mmfcl.Created } equals 
        new { filtermmfcl.StudentId, filtermmfcl.Date }
     Select mmfcl);

使用此查询,我在Join关键字附近遇到编译时错误。

  

join子句中某个表达式的类型不正确。调用“加入'

”时,类型推断失败

1 个答案:

答案 0 :(得分:0)

我找到了答案。 实际上问题出现在Clause上。

new { mmfcl.StudentId, mmfcl.Created } 

应与

相等
new { filtermmfcl.StudentId, filtermmfcl.Date }

关于数据类型和名称。

所以我改变了下面的条款并且工作正常

new { mmfcl.StudentId, mmfcl.Created } equals new { filtermmfcl.StudentId, 
filtermmfcl.Created }.