Entity framework LINQ GroupBy中缺少外键对象?

Entity framework LINQ GroupBy中缺少外键对象?,entity-framework,linq,group-by,foreign-keys,Entity Framework,Linq,Group By,Foreign Keys,我在我的LINQ查询中使用GroupBy。我的查询工作正常,只是缺少外键对象。然后,我尝试在我的查询中添加Include。以下是我的代码: public ActionResult GetEmployees() { var Emloyees = db.Employees.AsQueryable(); Emloyees.GroupBy(e=> new {e.JobTitleId, e.GenderId}) .Select(tr => new

我在我的
LINQ
查询中使用
GroupBy
。我的查询工作正常,只是缺少外键对象。然后,我尝试在我的查询中添加
Include
。以下是我的代码:

public ActionResult GetEmployees()
{
     var Emloyees = db.Employees.AsQueryable();
     Emloyees.GroupBy(e=> new {e.JobTitleId, e.GenderId})
             .Select(tr => new MyObject
                 SalaryTotal = tr.Sum(r=>r.Salary)
              }).Include(tr=>tr.JobTitle).Include(tr=>tr.Gender).ToList();
}
我得到一个例外:

查询的结果类型既不是EntityType,也不是具有实体元素类型的CollectionType。只能为具有这些结果类型之一的查询指定包含路径


我试图将它添加到
GroupBy
之前,并直接添加到
db.Employees.AsQueryable()
中,但没有任何效果。我做错了什么?

问题是您正在使用.Select(…)进行投影,之后无法解析include。该查询的结果将是一个列表MyObject,它不适用于实际位于Employee上的includes

因此,请像这样尝试:

Emloyees
    .GroupBy(e=> new {e.JobTitleId, e.GenderId})
    .Select(tr => new MyObject {
        SalaryTotal = tr.Sum(r=>r.Salary),
        JobTitle = tr.FirstOrDefault().JobTitle,
        Gender = tr.FirstOrDefault().Gender
    }).ToList();

您必须使用两个附加属性扩展MyObject,但查询结果将是您想要的(我假定)。

您只能对映射的实体类型使用
包含
<代码>MyObject
不是映射类型。你应该把
JobTitle
Gender
作为
MyObject
的一部分<代码>直接在
db之后包含
。员工
将被忽略,因为最终结果不包括员工。那么解决方案是什么?我在我的
MyObject
模型中有职位和性别。这就是我要找的。很好。这很好,因为组是由
JobTitleId
GenderId
完成的。