我的结构相当简单:
每个客户都有他的WeeklyOrder。
WeeklyOrder由 5 个DailyOrder组成,
每个DailyOrder中有 5 个带有ItemType(基本上是 5 个插槽之一)和Count的OrderItem。
我想统计这周的数据。因此,我从本周所有用户那里获得了所有DailyOrders。
var orders = db
.WeeklyOrders
.Where(x => x.WeekNumber == week && x.Year == year)
.SelectMany(x => x.DailyOrders);
一切正常,但现在我不知道如何按DailyOrder.DayNumber对每日订单进行分组,以及如何将每个 DailyOrder 中的项目分组(不是全部放在一起,分别针对每个每日订单),所以我知道所有用户的总和 - 有多少周一订购了 1 类物品,周二订购了多少,等等。
我只要求正确的 linq 查询。
为了让您了解我想在我的观点中得到什么:
周一
- 项目 1:x1
- 项目2:y1
- 项目3:z1
- 项目4:u1
- 项目 5:v1
周二
- 项目 1:x2
- 项目2:y2
- 项目3:z2
- 项目4:u2
- 项目 5:v2
...
等
这是我的模型:
public class WeeklyOrder
{
public int WeeklyOrderId { get; set; }
public int UserId { get; set; }
public int Year { get; set; }
public int WeekNumber { get; set; }
public virtual Customer Customer { get; set; }
public virtual List<DailyOrder> DailyOrders { get; set; }
}
public class DailyOrder
{
public int DailyOrderId { get; set; }
public int DayNumber { get; set; }
public int WeeklyOrderId { get; set; }
public virtual WeeklyOrder WeeklyOrder { get; set; }
public virtual List<OrderItem> OrderItems { get; set; }
}
public class OrderItem
{
public int OrderItemId { get; set; }
public int Count { get; set; }
public int ItemTypeId { get; set; }
public int DailyOrderId { get; set; }
public virtual DailyOrder DailyOrder { get; set; }
public virtual ItemType Type { get; set; }
}