如何在 Asp.Net MVC 中显示上周的数据
How to show data for Last Week in Asp.Net MVC
如何显示上周创建的工单的数据?我尝试在 google 上搜索,但无法使代码正常工作。所以,我想要的是上周创建的所有聊天记录。上周从周一开始,到周日结束。
- 聊天模型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; }
}
- 聊天记录控制器代码在这里
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);
如何显示上周创建的工单的数据?我尝试在 google 上搜索,但无法使代码正常工作。所以,我想要的是上周创建的所有聊天记录。上周从周一开始,到周日结束。
- 聊天模型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; }
}
- 聊天记录控制器代码在这里
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);