[英]GroupBy week/month
我從數據庫中獲取產品列表,每個產品都填充了 paymentDate ,我想像這樣格式化我的數據(只是一個例子):
{
Week:1,
Month:8,
Total:50
},
{
Week:2,
Month:8,
Total:40
},
{
Week:3,
Month:8,
Total:70
},
{
Week:4,
Month:8,
Total:85
}
... and so on..
現在我將我的數據按月分組,並在4個月內返回 4 INSTEAD OF 16行,例如:
Month:8,
Total:250
這就是我不想要的..
這是我的代碼:
首先,我從數據庫中獲取過去 4 個月的所有行,大約有 20-30 行具有PaymentDate
值(它們是過去 4 個月的行)。
var yas = await _context.products
.AsNoTracking()
.Where(x => (x.PaymentDate != null && x.PaymentDate > DateTime.UtcNow.AddMonths(-4))).ToListAsync();
在我得到所有行之后,我試圖將它們分組,以便在每個月按 WEEKS 分組數據。
var grouped = yas.GroupBy(x => CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(x.PaymentDate ?? DateTime.UtcNow, CalendarWeekRule.FirstDay, DayOfWeek.Monday))
.Select(product => new ProductsDemoData
{
//Week = should be week
Amount = product.Sum(x => x.Amount),
Month = product.FirstOrDefault().PaymentDate.Value.Month
});
數據示例:
您已按周分組,因此我認為您可以這樣做:
.Select(product => new ProductsDemoData
{
Week = product.Key,
Amount = product.Sum(x => x.Amount),
Month = product.FirstOrDefault().PaymentDate.Value.Month
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.