2017-01-03 99 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; 
}