使用实体框架计算日期?

时间:2017-01-03 04:04:26

标签: entity-framework entity-framework-6

我的表格中date为日期时间,月份为int

如何获得具有

的EF的所有实体

date + month_count > today's date - 7 days

表格结构

id uniqueidentifier
date datetime
month_count int 

1 个答案:

答案 0 :(得分:0)

出于性能原因,您可能需要考虑直接在SQL中执行日期计算:

using (var dbContext = new DbContext())
{
    var result = from entity in dbContext.Entities.SqlQuery(
        @"SELECT * FROM entities 
          WHERE 
              DATEDIFF(d, 
                  DATEADD(m, [month_count], [date]), 
                  GETDATE()) > -7");
}

详细了解如何将SQL与EntityFramework here

一起使用

另一种方法是将批次加载到内存中,并使用非SQL感知LINQ对其进行排序:

using (var dbContext = new DbContext())
{
    var oneWeekAgo = (DateTime.Now() - TimeSpan.FromDays(7)).Date();
    var result = from entity in dbContext.Entities.ToList()
        where entity.Date + TimeSpan.FromMonths(entity.MonthCount) 
            > oneWeekAgo;
}