我有一个接收类别 id 的方法,后跟两个默认为 null 的可选字符串参数。
我尝试使用其他关于 SO 的问题的类似答案,但到目前为止没有任何帮助。
我试图让 linq to EF 查询按如下方式工作:
如果任一可选参数有值,则使用该值,否则使用 Is Null。
如果两个可选参数都存在,则将它们用作查询的一部分,或者仅在提供的 eis 上使用其中一个。但如果没有添加参数,则只需使用类别 id。
db 中的两个可选参数都标记为可为空。
这是不起作用的代码:
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
尝试二:
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
不会抛出任何错误,但两个查询始终返回零结果,除非两个参数都存在。
我尝试过的帖子之一: 如何在实体框架中查询空值?