在 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 子句适用于整数?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL FIND_IN_SET OR IN 仅适用于第一个整数?

String.format(%X,num)仅适用于整数吗?

一个整数而不是字符串?为啥? [复制]

TryParse 适用于 var 但不适用于 C# 中的对象?

MySQL - WHERE 子句中的 NOT IN 查询具有相同的结构,适用于第一个表但不适用于第二个表

在火花中过滤数据框使用“in a set”子句