我有一个包含4列的表,例如ProductName,ProductType,ProductProductionStartDate,ProductProductionCompleteDate。
我需要做的是显示每种产品类型在12个月内的产品数量。
我该怎么做?
我的下面是我的代码:
var model = context.Projects
.Where(p => (p.ProductProductionStartDate > sdt && p.ProductProductionStartDate <= edt) && (p.ProductProductionCompleteDate != null))
.GroupBy(p => new
{
Month = p.ProductProductionStartDate.HasValue ? p.ProductProductionStartDate.Value.Month : 0,
Year = p.ProductProductionStartDate.HasValue ? p.ProductProductionStartDate.Value.Year : 0,
productType = p.ProductType
})
.Select(g => new Dashmain
{
ProductType = g.Key.StoreType,
Month = g.Key.Month,
Year = g.Key.Year,
Total = g.Count()
})
.OrderByDescending(a => a.Year)
.ThenBy(a => a.Month)
.ToList();
答案 0 :(得分:2)
我想以这种方式显示数据
{[Feb, 10,20,5], [March,10,20,5]}
您需要将GroupBy
嵌套在类型上,像这样:
var model = context.Projects
.Where(p => (p.ProductProductionStartDate > sdt && p.ProductProductionStartDate <= edt) && (p.ProductProductionCompleteDate != null))
.GroupBy(p => new
{
Month = p.ProductProductionStartDate.HasValue ? p.ProductProductionStartDate.Value.Month : 0,
Year = p.ProductProductionStartDate.HasValue ? p.ProductProductionStartDate.Value.Year : 0
})
.Select(g => new Dashmain
{
Month = g.Key.Month,
Year = g.Key.Year,
Totals = g.GroupBy(gg => gg.StoreType).OrderBy(gg => gg.Key).Select(gg => gg.Count()).ToList()
})
.OrderByDescending(a => a.Year)
.ThenBy(a => a.Month)
.ToList();
请注意,此方法有一个局限性:某个类别的产品为零的月份将完全没有数据。要解决此问题,您可以构建一个辅助方法,为缺少类型的乘积添加零。