Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 表达式的结果始终为';正确';因为类型为';int';永远不等于';空';类型为';int?&x27;不0_C#_Entity Framework_Asp.net Mvc 4 - Fatal编程技术网

C# 表达式的结果始终为';正确';因为类型为';int';永远不等于';空';类型为';int?&x27;不0

C# 表达式的结果始终为';正确';因为类型为';int';永远不等于';空';类型为';int?&x27;不0,c#,entity-framework,asp.net-mvc-4,C#,Entity Framework,Asp.net Mvc 4,我在EF中有这部分查询 状态为字节 我尝试parameters.Status.Value!=0 但对我来说,这并不能解决问题,因为0是一个表上的值 下面的方式显示了错误: 表达式的结果始终为“true”,因为“int”类型的值永远不等于“int”类型的“null” if (parameters.Status.Value != null) { query = query.Where(x => x.Status== parameters.

我在EF中有这部分查询

状态为字节

我尝试
parameters.Status.Value!=0

但对我来说,这并不能解决问题,因为0是一个表上的值

下面的方式显示了错误:
表达式的结果始终为“true”,因为“int”类型的值永远不等于“int”类型的“null”

if (parameters.Status.Value != null)
            {
                query = query.Where(x => x.Status== parameters.Status);
            }

            try
            {

                return query
                    .Sort(parameters, x => x.Id)
                    .Paginate(parameters);
            }
            catch (Exception exception)
            {
                throw new Exception(this.context.Database.Connection.ConnectionString, exception);
            }
在我看来 如果用户未选择任何值,则不应通过此条件,如果

obs.:未选择任何值,该值为空。

如何在不使用0表的情况下进行此验证?

我猜
参数.Status的类型实际上是
字节?
,因为没有.Value属性

如果是,则检查
parameters.Status!=null
和以后使用
x.Status==parameters.Status.Value

可为null类型的
.Value
将该值转换为不可为null的版本(如果为null,则会爆炸)。因此.Value本身永远不能为null


行编译(带有警告),因为Status.value的字节值被静默转换(返回)为可空字节,因此空检查有一定意义。

使用正确的格式检查它是否有值

if (parameters.Status.HasValue)
{
    query = query.Where(x => x.Status== parameters.Status.Value);
}

也许您应该简单地检查
parameters.Status.Value!=0
而不是
null
?输入参数是否可以像'int'一样为null?status'请显示
parameters
是的实例的类的代码。parameters.status是byte@OAprendiz如果它是一个
字节
,那么它就没有
属性。