在使用实体框架的c#中,获取30天到期的记录
本文关键字:获取 30天 记录 实体 框架 | 更新日期: 2023-09-27 18:04:24
我是c#世界和实体框架的新手。
我需要从在30天内到期的表中检索项目。我知道我可以在SQL端(使用存储过程)进行过滤,但我正在寻找实体框架中的解决方案。
这是我当前的代码:
using (var db = new MyDbContext())
{
var deliverableItems = db.Deliverables
.ToList() // fetch all records from Deliverable table.
.Where(d => Is30DaysDue(d));
foreach (var deliverable in deliverableItems)
{
Console.WriteLine(deliverable.DeliverableTitle);
// perform action on due items....
}
}
internal static bool Is30DaysDue(Deliverable deliverable)
{
var deliverableDueDate = deliverable.DeliverableRevisedDueDate ?? deliverable.DeliverableDueDate.Date;
var dateDiff = (deliverableDueDate.Date - DateTime.Now.Date).TotalDays;
return dateDiff == 30;
}
正如您在第4行中看到的,我首先从Deliverables
表中检索所有记录,然后执行所需的过滤。
是否有任何方法获取30天到期的项目使用实体框架?
编辑:之前忘了提,我有两个日期DeliverableRevisedDueDate
和DeliverableDueDate
。如果修改的截止日期为空,则只考虑交付截止日期。
编辑
我忘记了一些日期时间功能不支持链接到实体。所以你必须像这样使用
var newDate = DateTime.Now.Date.AddDays(-30);
var deliverableItems = db.Deliverables
.ToList() // fetch all records from Deliverable table.
.Where(d => d.DeliverableDueDate.Year == newDate.Year &&
d.DeliverableDueDate.Month == newDate.Month&&
d.DeliverableDueDate.Day == newDate.Day );