在DataTable的项目数组中获取价值

时间:2018-10-23 19:15:51

标签: c#

我有一个简单的数据表foreach:

foreach(DataRow designKey in designFolioList.Rows)
{

}

所以我每行有2个项目,例如:

enter image description here

所以我想获得我尝试的第一个的价值:

foreach(DataRow designKey in designFolioList.Rows)
{
    var currentDesignKey = designKey[0] as string;
}

但是currentDesignKey始终为null吗?我究竟做错了什么?如何从表中获取项目0的正确方法?

1 个答案:

答案 0 :(得分:4)

从该屏幕截图来看,designKey [0]不是字符串,而是一个整数。由于它不能直接转换为字符串,因此在其上使用as string将导致null。将as视为强制转换的一种形式,如果无法解决,该转换不会崩溃。这行不通:

object o = 123;
string s = (string)o;

它像这样崩溃:

  

运行时异常(第xx行):无法将类型为“ System.Int32”的对象转换为类型为“ System.String”。

as不会崩溃,对于不起作用的强制类型转换只会返回null;

如果您确实希望将其作为字符串,请对其调用.ToString()。否则,将其强制转换为int(或long /无论什么形式)

foreach(DataRow designKey in designFolioList.Rows)
{
    var currentDesignKey = (int)designKey[0];
    var currentDesignKeyStr = designKey[0].ToString();
}

.ToString()之所以有效,是因为对象具有.ToString()int也是如此(通过覆盖)。 ToString()转换为int,将其转换为自身的字符串表示形式:123 -> "123"