0

我在curPLTNOREL = Convert.ToInt32(DT.Rows[m]["PLT_NO_REL"].ToString());下面的行中收到此错误。我正在使用的 DataTable 有 129,707 行。Int m从 120,603 开始​​。我在第一次迭代时收到此错误。我尝试了几种将字符串转换为整数的不同方法,包括Int32.Parse()我收到相同的错误。第PLT_NO_REL120,603 行的值为11

int curPLTNOREL = 0;

for (int m = (my511.GetEnd(4) + divisions); m < DT.Rows.Count; m++)
{
    if (DT.Rows[m]["MAIL_TYPE"].ToString() != "UNQ")
    {
        curPLTNOREL = Convert.ToInt32(DT.Rows[m]["PLT_NO_REL"].ToString());
    }
    else
    {
        curPLTNOREL = 999;
    }
}

我有点难过。

4

2 回答 2

0

尝试使用DataRow.Field<>()扩展方法。这允许将数据列显式转换为指定类型。如果转换失败,它将抛出异常。

curPLTNOREL = int.Parse(DT.Rows[m].Field<string>("PLT_NO_REL"));

如果这引发异常,请阅读异常消息。它将说明该值是什么类型,以及为什么不能将其转换为 int。

您还需要检查该值是否可以为空,或者可以输入非数字。如果是这样,请使用 TryParse()。

于 2013-05-06T17:52:25.367 回答
0

因为它是 nvarchar 类型,所以它肯定会返回一个字符串值。并且不能直接解析成int。

于 2013-05-06T18:21:20.447 回答