C# 表达式的结果始终为';正确';因为类型为';int';永远不等于';空';类型为';int?&x27;不0
我在EF中有这部分查询 状态为字节 我尝试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.
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如果它是一个字节
,那么它就没有值
属性。