无法按年,月和日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();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章