代码之家  ›  专栏  ›  技术社区  ›  Nezir

C如何在转换到字符串()之前检查是否有任何值

  •  2
  • Nezir  · 技术社区  · 14 年前

    我有一个值的数据集,需要将其放入文本框中。但是,有一些 decimal double 在数据集中键入值,因此我需要强制转换它们 toString() . 此外,有时数据集值为空,因此在强制转换之前 托斯特林() 我需要检查那里是否有一个值。 这是采样线:

    我需要这样的代码…

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

    我知道decimal不是可以为空的类型。有什么简单的解决方案可以达到我想要的结果吗?

    8 回复  |  直到 11 年前
        1
  •  1
  •   Chaitanya    14 年前

    检查dbnull

    if(ds.tables[0].rows[0].field(“indexprethodni”)!=dbnull.value){ //转换为字符串 }

        2
  •  3
  •   Marc Gravell    14 年前

    就我个人而言,我会这样包装它:

            var col = ds.Tables[0].Columns["IndexPrethodni"];
            var row = ds.Tables[0].Rows[0];
            if (!row.IsNull(col))
            {
                string s = row[col].ToString();
                ...
            }
    

    (“通过列对象”是最直接(即最快)的索引器)

        3
  •  2
  •   svanryckeghem    14 年前

    尝试

    if(ds.Tables[0].Rows[0]["IndexPrethodni"] != DBNull.Value)
    

    您还可以使用convert.isdbnull()检查该值。

        4
  •  2
  •   Matthew Abbott    14 年前

    我通常使用这样的方法:

    public T GetValue<T>(object source)
    {
      if (Convert.IsDBNull(source))
        return default(T);
    
      return (T)source;
    }
    

    例如。

    using (var reader = command.ExecuteReader())
    {
      if (reader.Read())
      {
        return GetValue<string>(reader["SomeColumn"]);
      }
    }
    
        5
  •  1
  •   Dr. Rajesh Rolen    14 年前

    要使用convert.toString,您不需要检查空值,因为如果有空值,那么它也不会给出任何错误并返回空值。

        6
  •  1
  •   PaulG    14 年前

    您需要检查值是否不是dbnull,这样就可以了。

    object columnValue = ds.Tables[0].Rows[0].Field<decimal>("IndexPrethodni");
    if (object != System.DBNull.Value) Convert.ToString(columnValue);
    
        7
  •  1
  •   Viper    14 年前

    为什么不使用可以为空的类型来检查值?

    if( ds.Tables[ 0 ].Rows[ 0 ].Field<decimal?>( "IndexPrethodni" ).HasValue )
    {
       Convert.ToString( ds.Tables[ 0 ].Rows[ 0 ].Field<decimal>( "IndexPrethodni" ) );
    }
    
        8
  •  0
  •   sanjay.arora29    11 年前

    如果在转换为其他类型之前检查十进制值是否为空

    decimal? d;
    if (!d.HasValue)
    {
    //d is null 
    }