【发布时间】:2012-05-24 17:54:09
【问题描述】:
我有一个接收类别 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
不会引发错误,但除非两个参数都存在,否则两个查询始终返回零结果。
我尝试过的帖子之一: How can i query for null values in entity framework?
【问题讨论】:
-
Param2 不应该是 param2 吗?这可能只是一个发布问题。
标签: c# linq entity-framework optional-parameters isnull