首页 > 解决方案 > 在 ASP.net Core mvc 中过滤特定日期

问题描述

我目前正在制定一个议程,我想从即将到来的一周返回几天。

我的控制器中此视图的代码如下:

public ViewResult List()
{

    return View(repository.Days
        .OrderBy(d => d.date));
}

但是,此函数仅排序并返回所有日期,而不仅仅是下周的日期。我想知道是否有人可以帮助我获得即将到来的一周的日期/日期,从而获得所需的排序运算符。

标签: c#asp.netdatefilterasp.net-core-mvc

解决方案


找到了合适的解决方案:

    public ViewResult List()
    {
        DateTime startOfCurrentWeek = DateTime.Today.AddDays(-1 * (int)(DateTime.Today.DayOfWeek));
        DateTime startOfNextWeek = startOfCurrentWeek.AddDays(8);
        DateTime endOfNextWeek = startOfCurrentWeek.AddDays(14);

        return View(repository.Days
            .Where(d => d.date >= startOfNextWeek && d.date <= endOfNextWeek));
    }

这段代码的作用是:

  1. 获取本周开始日期 (startOfCurrentWeek)
  2. 添加 8 天以使其从下周的星期一开始(startOfNextWeek)
  3. 将 14 天添加到当前周的开始日期,以获得下周的最后一天 (endOfNextWeek)
  4. 返回等于或在下周星期一开始之后的所有天数 (d => d.date >= startOfNextWeek)
  5. 下周的星期日之后不返回任何值,因此将输出限制为下周的 7 天(d.date <= endOfNextWeek)

推荐阅读