2011-01-01 3 views
3

Я хочу, чтобы получить список продаж за каждый месяц заказанного продукта.продаж, сгруппированные по месяцам затем по продуктам

В настоящее время у меня есть следующие LINQ запрос:

 var query = storeDB.OrderDetails 
      .Select(od => od) 
      .GroupBy(r => r.Product) 
      .Select(group => new ProductSalesModel { 
       Product = group.Key, 
       Sales = group.Sum(s => s.Quantity), 
       Amount = group.Sum(s => s.Quantity * s.UnitPrice) 
      }) 
      .OrderByDescending(x => x.Amount); 

Как я должен сделать, чтобы также сгруппировать список по месяцам получать дату продаж от моего стола заказа? Order.CreationDate?

ответ

2

Я не знаю, что Linq провайдер вы пытаетесь использовать, но в простом Linq это должно работать:

.GroupBy(r => new {r.Product, r.CreationDate}) 

, а затем, когда вы выбираете:

.Select(group => new ProductSalesModel { 
       Product = group.Key.Product, 
       CreationDate = group.Key.CreationDate, 
       Sales = group.Sum(s => s.Quantity), 
       Amount = group.Sum(s => s.Quantity * s.UnitPrice) 
      }) 
+0

Это будет группа по всей дате не месяц - Возможно, '.GroupBy (г => новый {r.Product, r.CreationDate.Month})' может сделать работу –

0

Если вы хотите заказать что-то он должен быть в группировке. Затем вы можете использовать OrderByDescending(t=> t.amount).ThenBy(y => y.OrderDate)

+0

Извините, я хочу группировать по дате, а не по дате. Я изменил вопрос – Marc

Смежные вопросы