如何在C#列中仅添加数字号



我想在c#中获取数据列列的总和。但是,我的列由字符串和数字值组成。有没有办法可以总结列中的数字值?

dataTable

Column
hello
304
-312
213
bye

我尝试使用以下代码,但是当单元格不在数字值中时,它将不起作用。

var total = dt.Compute("Sum(column)","");

我认为您不能在Compute中使用铸造,因此解决方案可以是这样的(vb.net代码):

Dim dt As New DataTable
dt.Columns.Add("test")
dt.Rows.Add("hello")
dt.Rows.Add("304")
dt.Rows.Add("-312")
dt.Rows.Add("213")
dt.Rows.Add("bye")
Dim intTotal As Integer = 0
For Each dr As DataRow In dt.Rows
    Dim intValue As Integer = 0
    If Integer.TryParse(dr("test"), intValue) Then
        intTotal += intValue
    End If
Next dr
MsgBox(intTotal)
decimal sum;
for (i=0;i<rows;i++)
{
  sum += decimal.TryParse(dt["Column"][i].ToString(), out var value) ? value : (decimal)0L;
}

c#example

Datatable dt = new DataTable()
dt.Columns.Add("test")
dt.Rows.Add("test2")
dt.Rows.Add("45")
dt.Rows.Add("12")
dt.Rows.Add("-213")
dt.Rows.Add("test3")
int total = 0
Foreach(DataRow dr in dt.Rows) {
    If (Integer.TryParse(dr("test")){
        total += dr("test").value)
    }
}
return total;

计算方法允许键入转换。

var sum = dt.Compute("Sum(Convert(column, 'System.Int32'))");

您也可以使用linq:

int sum = dt.Rows.Select(dr=>(int)dr["column"]).Sum();

有关更多信息:MSDN

相关内容

  • 没有找到相关文章

最新更新