首页 > 解决方案 > 将值放入 DataTable 的项数组中

问题描述

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

foreach(DataRow designKey in designFolioList.Rows)
{

}

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

在此处输入图像描述

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

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

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

标签: c#

解决方案


从那个截图来看,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()有效,因为 object has .ToString(),所以int(通过覆盖)。ToString() 处理一个 int,将其转换为自身的字符串表示:123 -> "123"


推荐阅读