2017-01-03 8 views
0

私はdateをdatetime、月をintとするテーブルを持っています。Entity Frameworkによる日付計算?

にはどうすればいいですそのEFを持つすべてのエンティティを取得することができます

date + month_count > today's date - 7 days

テーブルの構造は、SQLで直接日付計算の実行を検討する必要がありますパフォーマンス上の理由から

id uniqueidentifier 
date datetime 
month_count int 

答えて

0

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

詳細については、 EntityFramework here

代替とSQLだけメモリに多くのことをロードし、非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; 
}