【问题标题】:Getting last 7 days data from days name like sunday, monday, tuesday etc in linq asp.net mvc从 linq asp.net mvc 中的星期天、星期一、星期二等日期名称获取最近 7 天的数据
【发布时间】:2020-02-24 13:38:19
【问题描述】:

我想在上周的几天(如上周日、上周一等 7 天)获取数据。我写了这个查询,但我返回 null。

var dateCriteria = DateTime.Now.Date.AddDays(-7);
var one = _context.Sale.Where(m => m.Date >= dateCriteria && m.Date.DayOfWeek.ToString() == 
"Sunday");

【问题讨论】:

    标签: c# asp.net-mvc linq asp.net-mvc-4 asp.net-core


    【解决方案1】:

    DayOfWeek 是枚举。所以不用转换就直接使用:

    var dateCriteria = DateTime.Now.Date.AddDays(-7);
    var one = _context.Sale.Where(m => m.Date >= dateCriteria && m.Date.DayOfWeek == 
    DayOfWeek.Sunday);
    

    【讨论】:

    • 不可能有 Where cluase,因为一周内只有一个星期日。如果我使用 FirstOrDefault 那么它会给我错误 InvalidOperationException
    【解决方案2】:

    我不确定我是否正确理解了您的问题,但为了获得上周日的销售额,我会采取以下措施。

     var one = _context.Sale.Where(m => m.Date == GetLast(DayOfWeek.Sunday));
    
     private DateTime GetLast(DayOfWeek dayOfWeek) {
         var currentDate = DateTime.Now.Date;
         var currentDayOfWeek = (int)currentDate.DayOfWeek;
    
         if (currentDayOfWeek <= (int)dayOfWeek) {
             currentDayOfWeek = currentDayOfWeek + 7;
         }
         int daysToExtract = currentDayOfWeek - (int)dayOfWeek;
    
         return currentDate.AddDays(-daysToExtract);
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多