2013-06-28 24 views
22

30日以内に返還された友人関係のリクエストを無効にしようとしています。LINQでDATEADDを使用する方法 - LINQでDateAddが認識されない

var requestIgnored = context.Request 
    .Where(c => c.IdRequest == result.IdRequest 
      && c.IdRequestTypes == 1 
      && c.Accepted == false 
      && DateTime.Now <= (((DateTime)c.DateResponse).AddDays(30))) 
    .SingleOrDefault(); 

c.DateResponseタイプDateTime?です。私が午前エラーは次のとおりです。

LINQあなたはこれを試す可能性があるコマンド.AddDays

+0

どのLinqProviderを使用していますか? L2Eの場合:http://stackoverflow.com/questions/4146300/linq-to-entityframework-datetime –

答えて

41

編集:あなたがEntityFrameworkを使用している場合> = 6.0、DbFunctions.AddDaysを使用してください。以前のバージョンのEntity Frameworkでは、EntityFunctions.AddDays

var requestIgnored = context.Request 
    .Where(c => c.IdRequest == result.IdRequest 
      && c.IdRequestTypes == 1 
      && c.Accepted == false 
      && DateTime.Now <= DbFunctions.AddDays(c.DateResponse, 30)) 
    .SingleOrDefault(); 
+0

EntityFunctionsは私にとって新しい世界です!ありがとうございました!!これは本当にうまくいった。 –

+2

これで「回答として受け入れる」べきです。答えの横にあるチェックマークを横切ります。これはあなたを助けてくれた人に信用を与え、他の人が正しい答えをすばやく見つけられるように助けます。 – Tormod

+0

'EntityFunctions'はEFコンテキスト内でのみ動作することに注意してください。メソッドを評価しようとすると(つまり、ユニットテストのローカルコレクションで)、例外がスローされます。 –

3

を認識しません:

var thirtyDaysAgo = DateTime.Now.AddDays(-30); 
var requestIgnored = context.Request 
    .Where(c => 
     c.IdRequest == result.IdRequest && 
     c.IdRequestTypes == 1 && 
     c.Accepted == false && 
     c.DateResponse.HasValue && 
     thirtyDaysAgo <= c.DateResponse.Value) 
    .SingleOrDefault(); 
関連する問題