c# - 将值放入 DataTable 的项数组中
问题描述
我有一个简单的 foreach 数据表:
foreach(DataRow designKey in designFolioList.Rows)
{
}
所以我在每行中有 2 个项目,例如:
所以我想获得我尝试的第一个的价值:
foreach(DataRow designKey in designFolioList.Rows)
{
var currentDesignKey = designKey[0] as string;
}
但是 currentDesignKey 总是为空?我究竟做错了什么?如何从表中获取项目 0 的正确方法是什么?
解决方案
从那个截图来看,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"
推荐阅读
- python - 存储和重用 tsfresh 执行的特征工程
- javascript - 每次调整窗口大小时如何在 JavaScript 中调用或运行函数?
- android - 将 Dagger 与 Espresso 搭配使用
- c++ - Digi spark 输入键盘错误
- php - 将 css 类添加到 PHP 日历中的特定(开始)日期
- python - 使用 to_pydatetime() 在日期和月份之前添加“0”
- timestamp - 在 Snowflow 中格式化时间戳 ntz 以输出为日期时间 YYYY-MM-DDTHH:MMZ
- java - 如何将传输流 PTS 与 MediaSync 一起使用?
- arrays - 通过使用可能的数组在 awk 中以困难模式分析两列来计数
- javascript - Cypress 元素不可见,因为它的有效宽度和高度为 0 x 0 像素