我有一个值数据集,我需要将其放入文本框中。但是,我的数据集中有一些decimal
和double
类型的值,因此我需要将它们转换为toString()
。此外,有时数据集值为空,因此在转换toString()
之前,我需要检查是否存在实际值。
这是样本行:
我需要做类似这样的代码...
if(ds.Tables[0].Rows[0].Field<decimal>("IndexPrethodni") !=null or something){
Convert.ToString(ds.Tables[0].Rows[0].Field<decimal>("IndexPrethodni"));
}
我知道十进制不是可以为空的类型。有没有简单的解决方案来实现我想要的结果?
答案 0 :(得分:3)
就个人而言,我会像这样包装它:
var col = ds.Tables[0].Columns["IndexPrethodni"];
var row = ds.Tables[0].Rows[0];
if (!row.IsNull(col))
{
string s = row[col].ToString();
...
}
(“通过列对象”是最直接(=最快)的索引器)
答案 1 :(得分:2)
尝试
if(ds.Tables[0].Rows[0]["IndexPrethodni"] != DBNull.Value)
您还可以使用Convert.IsDBNull()来检查值。
答案 2 :(得分:2)
我通常使用类似的方法:
public T GetValue<T>(object source)
{
if (Convert.IsDBNull(source))
return default(T);
return (T)source;
}
E.g。
using (var reader = command.ExecuteReader())
{
if (reader.Read())
{
return GetValue<string>(reader["SomeColumn"]);
}
}
答案 3 :(得分:1)
要使用Convert.ToString,您无需检查空值,因为如果它将为null,那么它也不会给出任何错误并返回空白..
答案 4 :(得分:1)
你需要检查值是不是DBNull,所以像这样的东西可以工作
object columnValue = ds.Tables[0].Rows[0].Field<decimal>("IndexPrethodni");
if (object != System.DBNull.Value) Convert.ToString(columnValue);
答案 5 :(得分:1)
检查DBNull
if(ds.Tables [0] .Rows [0] .Field(“IndexPrethodni”)!= DBNull.Value){ //转换为字符串 }
答案 6 :(得分:1)
为什么不使用可空类型来检查值?
if( ds.Tables[ 0 ].Rows[ 0 ].Field<decimal?>( "IndexPrethodni" ).HasValue )
{
Convert.ToString( ds.Tables[ 0 ].Rows[ 0 ].Field<decimal>( "IndexPrethodni" ) );
}
答案 7 :(得分:0)
如果我们在转换为其他类型
之前检查十进制值是否为nulldecimal? d;
if (!d.HasValue)
{
//d is null
}