C# 输入字符串的格式不正确。无法';t商店<&燃气轮机;列中。应为Int64

C# 输入字符串的格式不正确。无法';t商店<&燃气轮机;列中。应为Int64,c#,C#,这里我试图得到逗号分隔的值。以下代码为“tbl” 是包含逗号分隔值的表 private static DataTable PivotFieldData(DataTable tbl) { var tblPivot = new DataTable(); if (tbl.Columns.Count > 0) { tblPivot.Columns.Add(tbl.Columns[0].ColumnName, type

这里我试图得到逗号分隔的值。以下代码为“tbl” 是包含逗号分隔值的表

 private static DataTable PivotFieldData(DataTable tbl)
    {
        var tblPivot = new DataTable();
        if (tbl.Columns.Count > 0)
        {
            tblPivot.Columns.Add(tbl.Columns[0].ColumnName, typeof(int));
            for (int i = 0; i < tbl.Rows.Count; i++)
            {
                tblPivot.Columns.Add(Convert.ToString(tbl.Rows[i][1]), typeof(long));
            }
            var r = tblPivot.NewRow();
            r[0] = tbl.Rows[0][0].ToString();
            for (int col = 0; col < tbl.Rows.Count; col++)
            {
                r[col + 1] = tbl.Rows[col][2].ToString();
            }
            tblPivot.Rows.Add(r);
        }
        return tblPivot;
    }
但我得到一个错误,输入字符串的格式不正确。。。。
请检查一下,帮我。。。谢谢。

错误信息非常清楚。您有一个字符串值(即-2312,77845.00),您试图将其存储到
typeof(long)
的列中。如果该字符串值表示一个数字,则去掉逗号并删除循环中的
ToString
调用。如果它表示一个字符串(看起来是这样的,因为列在错误的位置,它不是一个数字),那么请更改列类型。

您所说的
而不是结构是什么意思?如何对非结构化数据表进行映像?异常中的数字小于
int.MinValue
。更改引用行的位置,改为使用
long
。错误消息非常简单。无法使用
Int64.parse
解析逗号分隔的值列表。它希望在您传递给它的字符串中有一个值,否则您希望它对其余的值做什么?您需要拆分字符串并分析每个值。谢谢@MattBurland。。你能帮我找到正确的代码行吗?@krillgar谢谢谢谢。你能给我举个例子吗@Craig W.既然你没有告诉我哪种情况是正确的,那么不,我不能提供一个例子。这确实是一个非常简单的解决方案,但首先您需要了解您的业务规则以及您正在尝试做什么。
r[col + 1] = tbl.Rows[col][2].ToString().Trim() == "" ? 0 : Convert.ToInt64(tbl.Rows[col][2].ToString());