在C#linq查询中使用IQueryable进行多重分组并返回对象列表
我有一个类似于此链接的表。我必须返回一个包含以下条件的在C#linq查询中使用IQueryable进行多重分组并返回对象列表,c#,entity-framework,linq,C#,Entity Framework,Linq,我有一个类似于此链接的表。我必须返回一个包含以下条件的ot\u request实体类列表 我必须过滤status\u id==5的列表 过滤后,我必须按照行的project\u id 按project\u id分组后,将有一些creator\u id具有相同的值。因此在project\u id分组中,我必须再次按照creator\u id对这些项目进行分组,并将属于它们的worktime\u hours相加 我尝试了以下Linq查询: (上下文是DB实体的对象) IQueryable filte
ot\u request
实体类列表
status\u id==5的列表
project\u id
project\u id
分组后,将有一些creator\u id
具有相同的值。因此在project\u id
分组中,我必须再次按照creator\u id
对这些项目进行分组,并将属于它们的worktime\u hours
相加IQueryable filterList=context.ot\u请求
.其中(o=>o.status_id==5)
.GroupBy(o=>o.project\u id)
.Select(o=>new{Project=o.Key,
总计=o.Sum(v=>v.worktime\u hours))}
.OrderByDescending(o=>o.Total);
但它向我显示了错误消息:
错误1无法隐式转换类型
“System.Linq.IOrderedQueryable”
到
“System.Linq.IQueryable”
。
存在显式转换(是否缺少强制转换?)
有人能帮我解决这个问题吗?我建议改变一下:
.OrderByDescending(o => o.Total);
致:
您当前正在通过现有的Select
调用返回匿名类型设置,而不是您感兴趣的特定类型
或者,如果您特别感兴趣的是总额
,请更改:
IQueryable<ot_request> filterList
这将确保
filterList
是新匿名类型(包括Total
)的IQueryable
。在您的选择中,您正在创建一个新的匿名类型。这就是为什么它会说System.Linq.IOrderedQueryable
问问自己:你在订购什么?他们不是你的要求吗?或者它们是不同的东西,项目和总体的东西?所以,如果您要对这个输入进行排序,您希望输出是什么?是否可以将其转换为ot_请求?
.OrderByDescending(o => o.Total).Select(z => z.Project);
IQueryable<ot_request> filterList
var filterList