2012-04-26 52 views
5

I持って、次のコードはサポートされていませんSqlFunctions.DateDiff

DateTime now = DateTime.UtcNow; 

var allItemsOver64 = _inventoryContext.Items.Where(i => 
    (SqlFunctions.DateDiff("dd", i.PrimaryInsured.DoB, now)/365.0) >= 65); 

IQueryable<Item> items65To69 = allItemsOver64.Where(i => 
    (SqlFunctions.DateDiff("dd", i.PrimaryInsured.DoB, now)/365.0) >= 65 && 
    (SqlFunctions.DateDiff("dd", i.PrimaryInsured.DoB, now)/365.0) <= 69); 

しかし、私は試してみて、私はこのエラー

表現 に(取得)allItemsOver64のでItems65To69.Countを(使用する場合(コンバート(DateDiff( "dd"、[10007] .PrimaryInsured.DoB、26/04/2012 15:03:09))/ 365)> = 65) 、[10007] .PrimaryInsured.DoB、26/04/2012 15:03:09))/ 365)> = 65)) および (Convert(DateDiff( "dd"、[10007] .PrimaryInsured.DoB、26/04/2012 15:03:09))/ 365)< = 69)) はサポートされていません。

私は間違っていますか?

+0

アリオン編集ありがとうございます。 –

+0

あなたはどのRDBMSシステムを使用していますか? –

答えて

6

SqlFunctionsではなくEntityFunctionsを試してみることもできます。エンティティへのLINQと

+0

ここで、式((DiffYears([10007] .PrimaryInsured.DoB、26/04/2012 15:25:49)> = 65)および(DiffYears([10007] .PrimaryInsured.DoB、26/04/2012)DiffYears([10007] .PrimaryInsured.DoB、26/04/2012 15:25:49)<= 69))はサポートされていません。 –

+0

今日のDbFunctions; EntityFunctionsは廃止されました –

+0

@ThomasHagström - なぜあなたはそれが時代遅れだと言いますか?ドキュメントをチェックすると、それがまだフレームワークに含まれていることがわかります。そこではまだサポートされている操作が他の場所ではサポートされていません。 –

2

DateDiff関数あなたは

Day difference 
EntityFunctions.DiffDays(startDate , endDate); 

Hours diff -> 
EntityFunctions.DiffHours(startDate , endDate); 

Minuutes diff -> 
EntityFunctions.DiffMinutes(startDate , endDate); 
2

にしたい場合は怒鳴る

以下れる私は、EF 4.1に関連した元の質問を理解してちょうどEntityFunctionsに注意することがEF6(https://msdn.microsoft.com/en-us/library/system.data.entity.core.objects.entityfunctions%28v=vs.113%29.aspx)で廃止されましたしたがって、EF6(https://msdn.microsoft.com/en-us/library/system.data.entity.dbfunctions%28v=vs.113%29.aspx)をターゲティングする場合は、DbFunctionsを代わりに使用する必要があります。

関連する問題