如何在c#

时间:2018-10-18 05:58:27

标签: c# asp.net .net

我正在使用以下代码,但没有得到任何结果,而是一片空白,并抛出诸如

的错误
Object cannot be cast from DBNull to other types.

第三列和第四列分别是FFBW

数据表值将类似于

C1   c2    FF  BW

56  122    3   4

23  45         7

45  78     6   

12  34     6   9

我想将总FF设为15,将总BW设为20

   decimal FF = 0,  BW = 0, AF = 0;

 DataTable table = dtPointLinks.Clone();
                table.Columns[0].DataType = typeof(string);
                table.Columns[1].DataType = typeof(string);
                table.Columns[2].DataType = typeof(string);
                table.Columns[3].DataType = typeof(string);


                // Declare an object variable.
                object objFF;
                objFF = table.Compute("Sum(FF)", string.Empty);
                object objBW;
                objBW = table.Compute("Sum(BW)", string.Empty);
                FF = Convert.ToDecimal(objFF);
                BW = Convert.ToDecimal(objBW); 

不知道这里出了什么问题

1 个答案:

答案 0 :(得分:0)

根据您的情况,您可以尝试使用传统的 for循环来获得所需的答案。

以下是示例代码,展示了如何实现此目标。

        decimal FF = 0;
        decimal BW = 0;

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            if(dt.Rows[i]["FF"].ToString() != "")
            {
                FF += Convert.ToDecimal(dt.Rows[i]["FF"].ToString());
            }
            if (dt.Rows[i]["BW"].ToString() != "")
            {
                BW += Convert.ToDecimal(dt.Rows[i]["BW"].ToString());
            }     
        }

最终结果将为 FF = 15 BW = 20

希望这可以为您提供帮助。