for (int i = 9; i < dt.Columns.Count; i++)
{
string dtcolumn = dt.Columns[i].ColumnName.ToString();
dt.Rows[dt.Rows.Count - 1][i] = Convert.ToInt32(dt.Compute("SUM( " + dtcolumn + " )", " " + dtcolumn + " > 0"));
}
当列值不为null时它正在工作。但有时抛出invalidcastexception并显示Object不能从DBNull转换为其他类型。以避免invalidcastexception
答案 0 :(得分:0)
你应该像@sajeetharan所说的那样添加一个空检查,但是他提到的空检查可能不起作用,因为这是ADO.NET。您应该使用DBNull检查null。
像这样的东西
for (int i = 9; i < dt.Columns.Count; i++)
{
if(!DBNull.Value.Equals(dt.Columns[i].ColumnName))
{
string dtcolumn = dt.Columns[i].ColumnName.ToString();
dt.Rows[dt.Rows.Count - 1][i] = Convert.ToInt32(dt.Compute("SUM( " + dtcolumn + " )", " " + dtcolumn + " > 0"));
}
}
答案 1 :(得分:0)
for (int j = 0; j < dt.Rows.Count; j++)
{
for (int k = 9; k < dt.Columns.Count; k++)
{
if (dt.Rows[j][k].ToString() == "")
{
dt.Rows[j][k] = "0";
}
}
}
for (int i = 9; i < dt.Columns.Count; i++)
{
string dtcolumn = dt.Columns[i].ColumnName.ToString();
dt.Rows[dt.Rows.Count - 1][i] = Convert.ToInt32(dt.Compute("SUM( " + dtcolumn + " )", "1 > 0"));
}
谢谢,这段代码无需任何异常