質問: new DateTime(year, month, day); return Ok(await db.HT_REZ .Where(r => (r.DATAI.AddDays(Convert.ToInt32(r.NRZILE)) >= date && r.DATAI.AddDays(Convert.ToInt32(r.NRZILE)) < date.AddDays(daysToShow)) || (r.DATAI <= date.AddDays(daysToShow) && r.DATAI.AddDays(Convert.ToInt32(r.NRZILE)) >= date.AddDays(daysToShow)) ) .Select(r => new { r.ID, .... }) .ToListAsync() ); } ``` EF Core 3では暗黙的なクライアント評価が無効になっていることがわかりました。データをフィルターする前にAsEnumerableを使用する必要がありますが、上記のクエリを修正できませんでした 助けてくれてありがとう
回答: 問題ではありません`DateTime.AddDays`サポート*され*て*いる*コール、。 例外メッセージには`Where`演算子全体が表示されるため、問題(サポートされていない)は述語内の他の式にあることに注意してください。 この特定のケースでは、サポートされていないのは`Convert.ToInt32(r.NRZILE)`式で、 `NRZFILE`タイプは`int?` `Convert.ToInt32(object)`一致し`Convert.ToInt32(object)` 。 EF Coreは`Convert`クラスメソッドのサブセットをサポートしていますが、一般的には、C#キャストまたはnullの合体演算子を使用して、それらを回避する必要があります(文字列からの変換を除く)。 たとえば、すべての出現箇所を置き換える ``` Convert.ToInt32(r.NRZILE) ``` と ``` (int)r.NRZILE ``` または( `DateAdd`のコンテキストで) ``` r.NRZILE ?? 0 ``` そして問題は解決されます。