无法将“System.DBNull”类型的对象强制转换为“System.String”类型

时间:2012-04-30 16:11:58

标签: c# string datatable datarow

我有一个数据代码来生成一个字符串,即sb.ToString()。

DataTable dt = dbaccess.GetDataTable("TEST"); // get datatable
List<DataRow> drlist = dt.AsEnumerable().ToList(); // each row only has one element.
StringBuilder sb = new StringBuilder(); 
foreach (DataRow row in drlist)
{
    foreach (string str in row.ItemArray)
    {
        sb.Append(str);
    }
}

数据表是

NULL
0
138
337
1666
1680
2511
8113

你看到有“NULL”导致错误“无法将类型'System.DBNull'的对象强制转换为'System.String'。 如何解决?

3 个答案:

答案 0 :(得分:4)

试试这个:

foreach (object str in row.ItemArray) 
{ 
    if (DbNull.Value.Equals(str))
       sb.Append("NULL");
    else
       sb.Append(str.ToString()); 
} 

答案 1 :(得分:1)

更改循环:

foreach(var obj in row.ItemArray)
{
    if(obj is string) sb.Append(obj as string);
}

答案 2 :(得分:1)

            if(!row.IsNull("column"))
            {
                foreach (string str in row.ItemArray)
                {
                    sb.Append(str);
                }                
            }