c# - 如何根据周数将空对象添加到我的列表中
问题描述
我从 db 中获取数据,如下所示:
后来我将它们分组,所以看起来像
Month 6
Week 2
Amount 228
等等..
这是代码:
var yas = await _context.product
.AsNoTracking()
.Where(x => (x.PaymentDate != null && x.PaymentDate > DateTime.UtcNow.AddMonths(-4))).ToListAsync();
var grouped = yas.GroupBy(x => CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(x.PaymentDate ?? DateTime.UtcNow, CalendarWeekRule.FirstDay, DayOfWeek.Monday))
.Select(product => new productsDemoObject
{
Week = GetWeekNumberOfMonth(product.FirstOrDefault().PaymentDate.Value),
Amount = product.Sum(x => x.Amount),
Month = product.FirstOrDefault().PaymentDate.Value.Month
});
正如您在第 6 个月看到的那样,只有第 2 周的数据。它是按预期分组和工作的,但现在我想知道如何添加数量为 0 的空对象来表示缺少的周数。
例如,如果只有第 2 周,让我们为第 1、3 和 4 周添加数量为 0 的数据。
在第 8 个月的示例中,因为有第 2 周和第 3 周,我应该添加第 1 周和第 4 周,数量为 0。
我怎么能做到这一点?
多谢你们
干杯
解决方案
如果您想要一年中的每周一个条目,您需要以某种方式创建这些条目。您可以查看此答案并根据您的要求对其进行一些修改。
像这样的东西:
DateTime jan1 = new DateTime(DateTime.Today.Year, 1, 1);
//beware different cultures, see other answers
DateTime startOfFirstWeek = jan1.AddDays(1 - (int)(jan1.DayOfWeek));
Dictionary<int, productsDemoObject> allWeeks =
Enumerable
.Range(0, 54)
.Select(i => new {
weekStart = startOfFirstWeek.AddDays(i * 7)
})
.TakeWhile(x => x.weekStart.Year <= jan1.Year)
.Select(x => new {
x.weekStart,
weekFinish = x.weekStart.AddDays(4)
})
.SkipWhile(x => x.weekFinish < jan1.AddDays(1))
.Select((x, i) => new productsDemoObject
{
Week = i + 1,
Month = x.weekStart.Month,
Amount = 0
})
.ToDictionary(x => x.Week, x => x);
foreach(var week in yas
.GroupBy(x => CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(x.PaymentDate ?? DateTime.UtcNow, CalendarWeekRule.FirstDay, DayOfWeek.Monday)))
{
allWeeks[week.Key].Amount = week.Sum(x => x.Amount);
}
推荐阅读
- r - 如何提取数据框列表中的列名?
- sql-server - 比较架构忽略架构名称
- c - 在 RHEL 服务器中编译 C 文件时出错
- r - 使用 matlab 和 R 计算数据集的 PCA,但每个组件的方差不同
- android - 按钮内的 AlertDialog 在 Fragment 中不起作用
- ios - 在单个 UITableViewCell 上填充两个对象项
- linux - Linux 配置了不支持的代理
- excel - Excel 中的 IF 语句中的值被添加而不是交换
- c++ - C++:为什么这个方法每次都返回相同的随机数?
- android - 如何区分 android NDK .c 文件中的风味