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

本文关键字:GroupBy 属性 导航 框架 实体 | 更新日期: 2023-09-27 18:25:57

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

public class Engine {
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Car> Cars { get; set; }
}
public class Car {
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual Engine Engine { get; set; }
    public virtual Purchase Purchase { get; set; }
}
public class Purchase {
    public int Id { get; set; }
    public DateTime Created { get; set; }
    public virtual ICollection<Car> Cars { get; set; }
}
  • Engine <-> Car(一对多关系)
  • Purchase <-> Car(一对多关系)

如何确定购买最多的发动机?我需要一份发动机的订购清单(降序)以及购买频率。

我在导航属性以及如何适当地对它们进行分组/聚合方面遇到了一些问题。

感谢

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

试试这个:

        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();

另外,请看一下这里。