私の構造はかなり単純です。
各 Customer にはWeeklyOrderがあります。
WeeklyOrderは 5 つのDailyOrderで構成され
、各DailyOrderにはItemType (基本的には 5 つのスロットの 1 つ) とCountを持つ5 つの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; }
}