5

次のコードがあります

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() を使用しようとすると、このエラーが発生します

式 ((((Convert(DateDiff("dd", [10007].PrimaryInsured.DoB, 26/04/2012 15:03:09)) / 365) >= 65) And ((Convert(DateDiff("dd) ", [10007].PrimaryInsured.DoB, 26/04/2012 15:03:09)) / 365) >= 65)) And ((Convert(DateDiff("dd", [10007].PrimaryInsured.DoB, 26) /04/2012 15:03:09)) / 365) <= 69)) はサポートされていません。

私は何を間違っていますか?

4

3 に答える 3

6

おそらく、SqlFunctionsではなく EntityFunctions を使用してみてください。

于 2012-04-26T15:20:52.120 に答える
3

EF 4.1 に関連する元の質問は理解していますが、EF6 では EntityFunctions が廃止されたことに注意してください ( 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 ) を対象とする場合は、代わりに DbFunctions を使用する必要があります。 .aspx )。

于 2015-06-17T15:15:53.300 に答える