【发布时间】:2018-06-13 21:31:34
【问题描述】:
我有一张桌子ot_request,就像这个链接一样。我必须返回具有以下条件的ot_request 实体类列表。
- 我必须过滤
status_id==5所在的列表 - 过滤后,我必须将行按
project_id分组 - 经过
project_id分组后,会有一些creator_id具有相同的值。所以在project_id分组中,我必须再次按它们的creator_id对这些项目进行分组,并将worktime_hours归于它们。
我尝试了以下 Linq 查询: (上下文是数据库实体的对象)
IQueryable<ot_request> filterList = context.ot_request
.Where(o => o.status_id == 5)
.GroupBy(o => o.project_id)
.Select(o => new { Project = o.Key,
Total = o.Sum(v=>v.worktime_hours))})
.OrderByDescending(o => o.Total);
但它向我显示了错误消息:
错误 1 无法隐式转换类型
'System.Linq.IOrderedQueryable<AnonymousType#1>'到'System.Linq.IQueryable<Project.DataEntity.ot_request>'。 存在显式转换(您是否缺少演员表?)
谁能帮我解决这个问题?
【问题讨论】:
-
在您的 Select 中,您正在创建一个新的匿名类型。这就是为什么它说
System.Linq.IOrderedQueryable<AnonymousType#1> -
问问自己:您要订购什么?他们是 ot_requests 吗?或者它们是不同的东西,与 Project 和 Total 有什么不同?因此,如果您订购此输入,您期望输出是什么?这可以转换为 ot_requests 吗?
标签: c# entity-framework linq