我有IEnumerable<DateTime>
。我想提取当前日历月中发生的所有日期,即使它们已经过去以及接下来的11个日历月中的所有日期。我将显示从最近开始按月分组的日期。例如:
当前日期 - 2012年3月12日
我已经知道如何进行分组。您将如何使用linq和C#过滤日期?
答案 0 :(得分:3)
这样的事情应该有效。您首先确定合法的日期范围,然后筛选出该范围之外的任何日期,最后按月分组。
我手工编写了以下代码,您可能需要调整它:
var acceptableFirstDate = DateTime.Today;
if (DateTime.Today.Day > 1)
{
acceptableFirstDate = DateTime.Today.AddDays(-DateTime.Today.Day + 1);
}
var acceptableLastDate = acceptableFirstDate.AddMonths(12).AddDays(-1);
var result = dates
.Where(x => x >= acceptableFirstDate && x <= acceptableLastDate)
.GroupBy(x => x.Month);
我希望这有帮助!