c# - 不能按年、月和日期分组 C#
问题描述
我想知道如何分别按年、月和日期对日期进行分组。
到目前为止,我设法按月份和日期分组,但是我在理解分组 ba 时遇到了一些麻烦
因此,我创建了几个代表日、月和年的类:
public class Day
{
public DateTime Date { get; set; }
}
public class Month
{
public int MonthNumber { get; set; }
public List<Day> Days { get; set; }
}
public class Year
{
public int YearNumber { get; set; }
public List<Month> Months { get; set; }
}
所以首先我得到了一系列日期并将它们添加到日期列表中。
var startDate = DateTime.Parse("12/08/2019");
var endDate = DateTime.Parse("01/03/2020");
var days = new List<Day>();
var months = new List<Month>();
var years = new List<Year>();
if (endDate >= startDate)
{
for (var date = startDate; date <= endDate; date=date.AddDays(1))
{
var dayModel = new Day();
dayModel.Date = date;
days.Add(dayModel);
}
}
然后我尝试按月对天进行分组并将它们添加到月份列表中:
var grouppedMonths = days.GroupBy(y => y.Date.Month).ToList();
foreach (var month in grouppedMonths)
{
var monthModel = new Month();
monthModel.Days = month.Select(d => d).ToList();
months.Add(monthModel);
}
按月分组后,我想按年对实际结果进行分组。我试过这样的事情:
var grouppedYears = months.GroupBy(x => x.Days.Select(y => y.Date.Year));
但这对我不起作用。总的来说我想得到
- 年表
- 包含月份列表
- 包含日期列表。
- 包含月份列表
解决方案
我猜你想要这个:
var results = days
.GroupBy(d => d.Date.Year)
.Select(y => new Year
{
YearNumber = y.Key,
Months = y
.GroupBy(d => d.Date.Month)
.Select(m => new Month
{
MonthNumber = m.Key,
Days = m.ToList()
})
.ToList()
})
.ToList();
推荐阅读
- nlp - 信息检索数据收集
- java - Spring Cloud Gateway 和 Spring Security 将经过身份验证的角色传递给微服务
- python - 如何在 python 中加速 jaro-winkler 进程(多线程?pyspark?)
- java - 错误:'请通过更新版本来修复版本冲突......'
- php - Laravel,在保存期间创建额外记录的特征?
- python - 将特定字符串与单词 python 进行比较
- python - ubuntu 18.04 ImportError:没有名为_backend_gdk的模块
- spring - Spring Signleton 中 ScheduledExecutorService 的生命周期(启动、关闭)
- python - 找到节点的最小成本集,以便一旦删除,图就会断开连接
- regex - 为什么这个正则表达式缺少引号?