如何在 Asp.Net MVC 中显示上周的数据

How to show data for Last Week in Asp.Net MVC

如何显示上周创建的工单的数据?我尝试在 google 上搜索,但无法使代码正常工作。所以,我想要的是上周创建的所有聊天记录。上周从周一开始,到周日结束。

  1. 聊天模型Class
public class Chat
    {
        [Key]
        public int ChatId { get; set; }

        [Required]
        public string CustName { get; set; }

        
        public string Query { get; set; }

        public string Resolution { get; set; }

        [Required]
        public DateTime ChatStartDateTime { get; set; }

        public DateTime? ChatCreateDateTime { get; set; }

        public DateTime? ChatEndDateTime { get; set; }

        public int Id { get; set; }
        public string Username { get; set; }
        public string FirstName { get; set; }
        public string Email { get; set; }

        [ForeignKey("Id")]
        public virtual User User { get; set; }


    }
  1. 聊天记录控制器代码在这里
var getSunday = DateTime.Now.Date.AddDays(-7);
                var getSat = DateTime.Now.Date.AddDays(7);

                //var dayOfWeek = DayOfWeek.Monday;

                ViewBag.lastWeek = db.Chats.Where(x => x.ChatCreateDateTime >= getSunday && x.ChatCreateDateTime <= getSat).Count();

非常感谢任何帮助。

您需要找到一周的开始时间(最近的星期一),然后以此为基础进行查询。这是一个使用扩展方法的解决方案 here on Stack Overflow:

用于获取最近星期一日期的扩展方法:

public static class DateTimeExtensions
{
    public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek)
    {
        int diff = (7 + (dt.DayOfWeek - startOfWeek)) % 7;
        return dt.AddDays(-1 * diff).Date;
    }
}

那么您的控制器代码将类似于:

var mostRecentMonday = DateTime.Now.StartOfWeek(DayOfWeek.Monday);//get week start of most recent Monday morning
var weekEnd = mostRecentMonday.AddDays(7).AddSeconds(-1); //will return the end of the day on Sunday
ViewBag.lastWeek = db.Chats.Where(x => x.ChatCreateDateTime >= mostRecentMonday && x.ChatCreateDateTime <= weekEnd).Count();

值得注意的是,如果您只是查看最近一周,那么您甚至不需要查询的 x.ChatCreateDateTime <= weekEnd 部分。

然后,如果您想获取历史数据(即:相同的数据,但针对 1 周前发生的周跨度)。你可以简单地改变这个:

var mostRecentMonday = DateTime.Now.StartOfWeek(DayOfWeek.Monday);

对此:

//subtract 1 weeks * 7 days per week = 7 days

var mostRecentMonday = DateTime.Now.AddDays(-7).StartOfWeek(DayOfWeek.Monday);