C#如何在转换ToString()之前检查是否有任何值

时间:2010-10-13 08:51:15

标签: c# casting textbox dataset

我有一个值数据集,我需要将其放入文本框中。但是,我的数据集中有一些decimaldouble类型的值,因此我需要将它们转换为toString()。此外,有时数据集值为空,因此在转换toString()之前,我需要检查是否存在实际值。 这是样本行:

我需要做类似这样的代码...

if(ds.Tables[0].Rows[0].Field<decimal>("IndexPrethodni") !=null or something){
    Convert.ToString(ds.Tables[0].Rows[0].Field<decimal>("IndexPrethodni"));
}

我知道十进制不是可以为空的类型。有没有简单的解决方案来实现我想要的结果?

8 个答案:

答案 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)

如果我们在转换为其他类型

之前检查十进制值是否为null
decimal? d;
if (!d.HasValue)
{
//d is null 
}