entity-framework-6 - EF 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 子句中的表达式之一的类型不正确。调用“加入”时类型推断失败
解决方案
我找到了答案。实际上问题出在 on 子句上。
new { mmfcl.StudentId, mmfcl.Created }
应该等于
new { filtermmfcl.StudentId, filtermmfcl.Date }
关于数据类型和名称也是如此。
所以我改变了下面的条款并且工作正常
new { mmfcl.StudentId, mmfcl.Created } equals new { filtermmfcl.StudentId,
filtermmfcl.Created }.
推荐阅读
- c# - 上传预览图像时获取“Base-64 字符数组或字符串的长度无效”
- html - 如果高度太大,如何限制将显示多少图像?
- android - 使用谷歌地图指向特定位置
- python-3.x - Pandas:取具有匹配值的行的平均值
- javascript - 如何发布 Ajax 请求
- sql - Hibernate DDL 更新 SQL 查询
- math - R 编程语言有这种语法吗?
- javascript - 如何使用代码点火器 fromework 在 PHP 中打印出模态内部的内容
- angular - 如何避免使用 Visual Studio 2017 在 Angular 4 的生产模式下加载 node_modules 和 .ts 文件
- json - Cloudformation,模板验证错误:无效的模板属性或属性