获取当前日历月和接下来的11个月的日期

时间:2012-03-29 13:14:23

标签: c# linq

我有IEnumerable<DateTime>。我想提取当前日历月中发生的所有日期,即使它们已经过去以及接下来的11个日历月中的所有日期。我将显示从最近开始按月分组的日期。例如:

当前日期 - 2012年3月12日

  • 2012年3月
    • 3月3日 - 活动1
    • 3月15日 - 活动2
    • 3月30日 - 活动3
  • ...
  • ...
  • ...
  • 2013年2月
    • 2月3日 - 事件156
    • 2月13日 - 活动157
    • 2月20日 - 活动158

我已经知道如何进行分组。您将如何使用linq和C#过滤日期?

1 个答案:

答案 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);

我希望这有帮助!