gpt4 book ai didi

c# - 在转换为 int 之前将空字段转换为零?

转载 作者:可可西里 更新时间:2023-11-01 07:52:39 28 4
gpt4 key购买 nike

在我的程序中,我循环遍历数据表以从每个字段获取数据。我的一行代码如下所示:

int LYSMKWh = Convert.ToInt32(resultsDT.Rows[currentRow]["LYSMKWh"]);

基本上,我只是获取单元格中的值并将其转换为 int32。但是,当字段中的数据为空时,我遇到了问题。我收到有关无法将“DBNull”转换为另一种类型的无效转换错误消息。

所以,我知道我可以在尝试通过执行以下操作转换它之前检查该字段的值:

if (resultsDT.Rows[currentRow]["LYSMKWh"] == null)
{
resultsDT.Rows[currentRow]["LYSMKWh"] = 0;
}

但是,有更好的方法吗?当我尝试转换值而不必求助于使用 if 时,有什么我可以“内联”的吗?

编辑:我确实尝试过使用这个建议的方法:

int LYSMKWh = Convert.ToInt32(resultsDT.Rows[currentRow]["LYSMKWh"] ?? "0");

不幸的是,我仍然收到关于 DBNull 类型的 Invalid Cast 错误消息。有人建议我使用 ??运算符,如果两边的类型不同。

此外,由于我可以完全控制用来构建数据表的数据,因此我对其进行了更改,以便不会将空值写入任何字段。因此,在这种情况下,这几乎不需要将 null 转换为 int32。谢谢大家的建议!

最佳答案

你可以这样做:

var LYSMKWh =
resultsDT.Rows[currentRow]["LYSMKWh"].Equals(DBNull.Value)
? 0
: Convert.ToInt32(resultsDT.Rows[currentRow]["LYSMKWh"]);

关于c# - 在转换为 int 之前将空字段转换为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7096309/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com