2016-06-28 11 views
0

以下のクエリの過去5年間のデータを取得する必要があります。Entity Framework Linqを使用して過去5年間のデータを取得する

var propertyIdList = (from property in _context.Properties 
         .Where(p => p.CreationTime >= condition for 5 years data restriction) 
         select new PropertyIdListDto 
            { 
             Id = property.Id, 
            }).OrderBy(p => p.Id).AsNoTracking().ToList(); 

私はTSQLでそれを行う方法を知っています。しかし、私はLinqとそれを行う必要があります。

TSQL(試料):

SELECT * 
    FROM products 
WHERE date_column >= add_months(sysdate, -12*5) 
+1

p.CreationTime> = DateTime.Now.AddYears(-5) – artm

+0

使用EntityFuctions.AddYears又はDbFunctions – JamieD77

答えて

1

は、このような何かを試し

var fiveYearsBackDate = DateTime.Now.AddYears(-5); 
var propertyIdList = (from property in _context.Properties 
         .Where(p => p.CreationTime >= fiveYearsBackDate) 
         select new PropertyIdListDto 
            { 
             Id = property.Id, 
            }).OrderBy(p => p.Id).AsNoTracking().ToList(); 
+0

この実行時例外が発生します。理由を教えてもらえますか? 'System.NotSupportedException:LINQ to Entitiesは、 'System.DateTime AddYears(Int32)'メソッドのメソッドを認識せず、このメソッドをストア式に変換することはできません。 ' – Sampath

+0

この例で行ったように、インラインで日付を別々に計算しないでください。 – Ahsan

+0

ああ...そうだよ。たくさんありがとう:) – Sampath

関連する問題