簡體   English   中英

按周/月分組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM