[英]Check if decimal value is null
我想检查十进制数是否为NULL或它有一些值,因为该值是从类对象的数据库中分配的:
public decimal myDecimal{ get; set; }
然后我有
myDecimal = Convert.ToDecimal(rdrSelect[23].ToString());
我在尝试:
if (rdrSelect[23] != DBNull.Value)
{
myDecimal = Convert.ToDecimal(rdrSelect[23].ToString());
}
但是我得到了这个:
表达式的结果始终为“true”,因为“decimal”类型的值永远不会等于null
如何检查该十进制数是否有值?
你可以使用这段代码
if (DecimalVariable.Equals(null))
{
//something statements
}
decimal
是.NET中的value type
。 值类型不能为null
。 但是如果你为你的decimal
使用nullable type
,那么你可以检查你的decimal
是否为null
。 喜欢myDecimal?
可空类型是System.Nullable结构的实例。 可空类型可以表示其基础值类型的正常值范围,以及额外的空值。
if (myDecimal.HasValue)
但我认为在您的数据库中,如果此列包含可空值,则它不应该是decimal
类型。
假设您正在读取数据行,您想要的是:
if ( !rdrSelect.IsNull(23) )
{
//handle parsing
}
Decimal是一个值类型,因此如果您希望检查它是否具有除了初始化为(零)的值以外的值,您可以使用条件myDecimal!= default(decimal)。
否则你应该考虑使用可空(十进制?)类型并使用一个条件,如myNullableDecimal.HasValue
如果您直接从SQL数据库中提取此值并且该值为null,则实际上它将是DBNull
对象而不是null。 无论是事先放置在检查你的转换和在发生使用默认值DBNull
,或对检查后更换您的空检查rdrSelect[23]
为DBNull
。
您还可以创建一个方便的实用程序函数来处理来自DB的值,例如这些情况。 防爆。 下面是从对象类型中为您提供Nullable Decimal的函数。
public static decimal? ToNullableDecimal(object val)
{
if (val is DBNull ||
val == null)
{
return null;
}
if (val is string &&
((string)val).Length == 0)
{
return null;
}
return Convert.ToDecimal(val);
}
我最近在尝试从db中从DataTable
对象检索空小数时遇到了这个问题,我在这里没有看到这个答案。 我发现这更简单,更短:
var value = rdrSelect.Field<decimal?>("ColumnName") ?? 0;
这在我的情况下很有用,因为我在模型中没有可以为空的小数,但需要快速检查一个。 如果db值恰好为null,那么它只会分配默认值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.