我一直试图找到解决方案,并且我已经看到了很多关于如何在ISNULL
语句中使用SELECT
功能的示例,或者如何检查a中的空值WHERE
子句返回一个布尔值。
但是,通过搜索如何返回整数,我无法找到任何示例,具体取决于值是否为空。
我试图从SQL复制一个简单的功能:
SELECT *
FROM Projects
WHERE ISNULL(projects.ParentID , 0) = @Value
我根据我在搜索过程中看到SELECT
子句或ISNULL
子句中WHERE
布尔操作的建议尝试了一些不同的方法:
var output = (from p in ctx.Projects...
1
...
where ( (p.ParentID == null) ? p.ParentID == 0 : p.ParentID == p.ParentID) == @var
2
...
where p.ParentID ?? 0 == @var
3
...
where p.ParentID ? 0 == @var
4
...
where ((p.ParentID == null) ? true : 0 ) == @var
5
...
where
((p.ParentID == null) ? 0 ) == @var
...select p
)
任何帮助都会受到赞赏,我不知道为什么Linq与SQL相比这么复杂。
答案 0 :(得分:2)
为什么不简单:
var q = ctx.Projects.Where(p => p.ParentId == parentId);
如果parentId
是int
或int?
,则可行。
如果将null视为0,则应该起作用:
var q = ctx.Projects.Where(p => (p.ParentId ?? 0) == parentId);
答案 1 :(得分:2)
怎么样
where (p.ParentId == value) || (value == 0 && p.ParentId == null)
因为值== 0已经被称为生成查询的时间,所以您将获得一些性能。