在 c# where in 子句适用于整数?
Posted
技术标签:
【中文标题】在 c# where in 子句适用于整数?【英文标题】:In c# where in clause works for integers? 【发布时间】:2017-05-11 12:10:01 【问题描述】:我在这里使用整数的 where 子句。可能吗 ?因为我没有得到所需的结果。
ProjectDetail objProjlst1 = _ProjectContext.ProjectDetails.Where(x => x.Phase == Phase).SingleOrDefault();
if(objProjlst1!= null)
return true;
else
return false;
这里的相位是一个整数。 运行整个 Web 应用程序时出现错误“对象对象”
【问题讨论】:
是的,可以使用整数。您所要做的就是确保您的表达式返回布尔值。 嗯,你得到了什么做?这里没有足够的信息来帮助您。 两种可能,要么您的ProjectDetails
不包含与Phase
匹配的整数,要么包含多个匹配的整数。
我想你想使用 .Any()
并返回它
什么会让你相信它不适用于整数?在怀疑你的代码之前怀疑编译器是一条崎岖不平的道路。
【参考方案1】:
如果_ProjectContext.ProjectDetails
有多个阶段项,那么它将抛出异常。
但是如果没有匹配的元素则返回0
var numbers = new[] 1 ,2, 3;
numbers.Where(x => x == 6).SingleOrDefault(); // returns 0
因为
default(int) == 0
【讨论】:
在 OPs 的情况下,它将返回null
,因为 ProjectDetail
是一个引用类型。【参考方案2】:
它应该可以工作,只需调试并检查 db 中是否存在 int 记录,但是尝试使用
.FirstOrDefault() 设置为 .SingleOrDefault(),因为如果有多个结果,它会给出异常错误;
【讨论】:
让我试试这个 .FirstOrDefault() 如果集合没有匹配的元素,也会返回 0 按照两个不同的人的建议尝试.Any
,代码会更少。以上是关于在 c# where in 子句适用于整数?的主要内容,如果未能解决你的问题,请参考以下文章
使用 VBA 函数调用在 QueryEditor 中创建查询以指定 WHERE IN 子句
MySQL UDF 仅适用于 `IF` 中的 `WHERE` 子句