C# 实体框架6-导航属性上的GroupBy

C# 实体框架6-导航属性上的GroupBy,c#,entity-framework,model,C#,Entity Framework,Model,我正在使用实体框架6(EF 6)并拥有以下模型: 公共类引擎{ 公共int Id{get;set;} 公共字符串名称{get;set;} 公共虚拟ICollection Cars{get;set;} } 公车{ 公共int Id{get;set;} 公共字符串名称{get;set;} 公共虚拟引擎引擎{get;set;} 公共虚拟购买{get;set;} } 公共类购买{ 公共int Id{get;set;} 已创建公共日期时间{get;set;} 公共虚拟ICollection Cars{ge

我正在使用实体框架6(EF 6)并拥有以下模型:

公共类引擎{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection Cars{get;set;}
}
公车{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共虚拟引擎引擎{get;set;}
公共虚拟购买{get;set;}
}
公共类购买{
公共int Id{get;set;}
已创建公共日期时间{get;set;}
公共虚拟ICollection Cars{get;set;}
}
  • 发动机车
    (一对多关系)
  • 购车
    (一对多关系)
如何确定购买的发动机最多?我需要一个有序的列表(降序)的引擎和多久他们被购买

我对导航属性以及如何对它们进行适当的分组/聚合有一些问题

谢谢

试试这个:

        return
            (from car
                 in this.Context.Cars
                    where car.Purchase != null
                    group car by car.Engine into g
               select new { EngineName = g.Key.Name, CountSold = g.Count()})
            .OrderByDescending(x => x.CountSold)
            .ToList();
另外,请看一看