質問: products.Where(p => (p.Price >= userParams.MinPrice) && (p.Price <= userParams.MaxPrice)); } ``` `userParams.MinPrice`のみが指定されている場合は正常に実行されますが、 `userParams.MaxPrice`が指定されている場合は失敗します。 私が得るエラーはこれです。 > 要求の実行中に未処理の例外が発生しました。 > > System.InvalidOperationException:LINQクエリパラメータ式を評価しようとしたときに例外が送出されました。追加情報を表示するには、DbContext.OnConfiguringをオーバーライドするときにEnableSensitiveDataLogging()を呼び出します。 > > System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。 > > lambda_method(クロージャ) > Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.Internal.ParameterExtractingExpressionVisitor.Evaluate(Expression expression、String&parameterName)で。 > > 誰もがこれに対する解決策を知っていますか?助けてください
回答: それはかなり簡単です、あなたのエラーがそれを説明しています。 `userParams.MaxPrice`がnullです。だからあなたはそれにnullチェックを追加する必要があります。簡単な方法は、クエリを次のように変更することです。 ``` if (userParams.MinPrice > 0 && userParams.MaxPrice != null && userParams.MaxPrice != 999999999) { products = products.Where(p => (p.Price >= userParams.MinPrice) && (p.Price <= userParams.MaxPrice)); } ``` あなたの論理にもよるが、あなたは物事をわずかに変える必要があるかもしれない。重要な点は、プロパティに値があると見なさないことです。それがNULL可能である場合は、まずnullではないことを確認してから確認する必要があります。 理論的には`userParams.MaxPrice.GetValueOrDefault() != 999999999`することもできますが、これはNULL値の可能性のある整数値などであると想定してください。