繁体   English   中英

获取列名并对数据表C#中的值求和

[英]getting the columnname and sum the values in datatable c#

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强制转换为其他类型。

您应该像@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"));
     } 
 }
            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"));

         }

谢谢,这段代码可以正常工作而不会引起任何异常

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM