分组按周/月 [英] GroupBy week/month

查看:186
本文介绍了分组按周/月的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从数据库中获取产品列表,每个产品都填充了paymentDate,我想这样格式化我的数据(仅作为示例):

I'm getting list of products from a database, each of them have populated paymentDate and I would like to format my data like this (just an example):

{ 
  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 行,例如:

Now I'm getting my data grouped by month and for 4 months it returns 4 INSTEAD OF 16 rows like:

Month:8,
Total:250

那就是我所不想要的..

And that's what I don't want..

这是我的代码:

首先,我要从数据库中获取最近4个月的所有行,其中有20-30行具有PaymentDate值(这是最近4个月的行).

First I'm getting all rows from a last 4 months from a database, there is like 20-30 rows with PaymentDate value (which are rows from last 4 months).

var yas = await _context.products
                .AsNoTracking()
                .Where(x => (x.PaymentDate != null && x.PaymentDate > DateTime.UtcNow.AddMonths(-4))).ToListAsync();

获取所有行之后,我试图将它们分组,以获取每个MONTE中按WEEKS分组的数据.

After I get all rows, I'm trying to group them on a way to get data grouped by WEEKS in each MONTH.

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
                    });

数据示例:

推荐答案

您已按Week分组,所以我认为您可以这样做:

you've grouped by Week, so you can just do this I think:

.Select(product => new ProductsDemoData
                {
                    Week = product.Key,
                    Amount = product.Sum(x => x.Amount),
                    Month = product.FirstOrDefault().PaymentDate.Value.Month
                });

这篇关于分组按周/月的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆