カテゴリ ID を受け取るメソッドがあり、その後にデフォルトで null に設定されている 2 つのオプションの文字列パラメーターが続きます。
SOに関する他の質問からいくつかの同様の回答を使用してみましたが、どれも役に立ちませんでした。
次のように、linq to EF クエリを機能させようとしています。
いずれかのオプション パラメータに値がある場合は、その値を使用します。それ以外の場合は、Is Null を使用します。
両方のオプションのパラメーターが存在する場合は、これらをクエリの一部として使用するか、eis のみが提供されている場合はいずれかを使用します。ただし、パラメータが追加されていない場合は、カテゴリ ID のみを使用してください。
db の両方のオプション パラメータは、null 許容としてマークされています。
動作しないコードは次のとおりです。
from c in dtx.Categories
where c.CategoryId == CatId
&& (string.IsNullOrEmpty(param1) ? c.Param1 == null : c.Param1 == param1)
&& (string.IsNullOrEmpty(param2) ? c.Param2 == null : c.Param2 == Param2)
select c
2つ試してください:
from c in dtx.Categories
where c.CategoryId == CatId
&& (c.Param1 == null ? c.Param1 == null : c.Param1 == param1)
&& (c.Param2 == null ? c.Param2 == null : c.Param2 == param2)
select c
エラーはスローされませんが、両方のパラメーターが存在しない限り、両方のクエリは常にゼロの結果を返します。
私が試した投稿の1つ: エンティティフレームワークでnull値を照会するにはどうすればよいですか?