无法在LINQ中对实体类型(IQueryable)执行GroupBy

时间:2018-03-08 16:41:17

标签: c# asp.net-mvc linq asp.net-web-api

以下代码失败:

Iqueryable<shift> list = null;

list = context.shifts.Where(o => o.create_date == date).GroupBy(m => m.empId).select(
g=>
new{
empId = g.Key,
time = g.Sum(s => s.hours) // need to calculate sum of hours worked in each employee
}
);

它会导致报告以下错误:

Cannot implicitly convert type 'System.Linq.IQueryable' to 'System.Data.Entity.shift'

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望根据班次表生成一些组值。

您遇到的问题是Select方法返回一个新的匿名类型,并尝试将其分配给IQueryable<shift>

你可以使用评论中提到的var,或者你可以创建一个新类型并使用它而不是匿名的,如下所示

public class ShiftGroup
{
    public int EmpId { get; set; }
    public int TotalHours { get; set; }
}


IQueryable<ShiftGroup> result =  context.shifts.Where(o => o.create_date == date).GroupBy(m => m.empId).select(
    g=>
    new ShiftGroup {
        EmpId = g.Key,
        TotalHours = g.Sum(s => s.hours) // need to calculate sum of hours worked in each employee
        }
);