我想知道如何分别按年,月和日对日期进行分组。
到目前为止,我设法按月和日期进行分组,但是在对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] 删除。
我来说两句