2017-01-03 67 views
0

我有一张表,其中date为日期时间,一个月为int使用实体框架计算日期?

我怎样才能与EF所有实体是

date + month_count > today's date - 7 days

表结构

id uniqueidentifier 
date datetime 
month_count int 

回答

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; 
}