如何计算asp.net中数据表列的总和?

Posted

技术标签:

【中文标题】如何计算asp.net中数据表列的总和?【英文标题】:How to calculate the sum of the datatable column in asp.net? 【发布时间】:2011-08-19 01:51:12 【问题描述】:

我有一个包含 5 列的 DataTable:

身份证 姓名 帐号 分公司 金额

DataTable 包含 5 行。

如何在标签控件中将金额列的总和显示为“总金额”?

【问题讨论】:

你有 ADO.Net DataTable 还是 DataTable 是指数据库表? 数据表是仅仅用于提供 Total 还是绑定到另一个控件,例如 gridView 或 repeater?你们中的人纯粹是从下面的 Jonathan Woods 建议中提取总使用量。 你知道你有 5 行,还是更多或更少? 谢谢大家的效果。我得到了答案。 【参考方案1】:

要计算 DataTable 中列的总和,请使用 DataTable.Compute 方法。

链接的 MSDN 文章中的使用示例:

DataTable table = dataSet.Tables["YourTableName"];

// Declare an object variable.
object sumObject;
sumObject = table.Compute("Sum(Amount)", string.Empty);

在您的总金额标签中显示结果,如下所示:

lblTotalAmount.Text = sumObject.ToString();

【讨论】:

他不要过滤表达式,他只想计算所有行的数量。在您的回答中,过滤表达式的意思是,它将计算 EmpId = 5 的总和。 它要求过滤器。我没有任何过滤条件。我想对数据表中的所有行求和。 Jay 感谢您的解决方案。它减少了我的行代码数量。 @John 很高兴我能帮上忙!【参考方案2】:
 this.LabelControl.Text = datatable.AsEnumerable()
    .Sum(x => x.Field<int>("Amount"))
    .ToString();

如果要过滤结果:

 this.LabelControl.Text = datatable.AsEnumerable()
    .Where(y => y.Field<string>("SomeCol") != "foo")
    .Sum(x => x.Field<int>("MyColumn") )
    .ToString();

【讨论】:

【参考方案3】:

如果你有一个 ADO.Net 数据表,你可以这样做

int sum = 0;
foreach(DataRow dr in dataTable.Rows)

   sum += Convert.ToInt32(dr["Amount"]);

如果要查询数据库表,可以使用

Select Sum(Amount) From DataTable

【讨论】:

【参考方案4】:

你可以这样做..

DataRow[] dr = dtbl.Select("SUM(Amount)");
txtTotalAmount.Text = Convert.ToString(dr[0]);

【讨论】:

【参考方案5】:
  public decimal Total()
    
      decimal decTotal=(datagridview1.DataSource as DataTable).Compute("Sum(FieldName)","");
      return decTotal;
    

【讨论】:

【参考方案6】:

您可以按名称分组使用 Linq

  var allEntries = from r in dt.AsEnumerable()
                            select r["Amount"];

使用名称空间using System.Linq;

您可以在Myblog使用c#在数据表中找到样本总数、小计、总计

【讨论】:

【参考方案7】:

计算数据表中列的总和,100% 有效

lbl_TotaAmt.Text = MyDataTable.Compute("Sum(BalAmt)", "").ToString();

如果你想有任何条件,就这样使用它

   lbl_TotaAmt.Text = MyDataTable.Compute("Sum(BalAmt)", "srno=1 or srno in(1,2)").ToString();

【讨论】:

【参考方案8】:

试试这个

int sum = 0;
foreach (DataRow dr in dt.Rows)

     dynamic value = dr[index].ToString();
     if (!string.IsNullOrEmpty(value))
      
         sum += Convert.ToInt32(value);
     

【讨论】:

【参考方案9】:

我认为这解决了

using System.Linq;


(datagridview1.DataSource as DataTable).AsEnumerable().Sum(c => c.Field<double>("valor"))

【讨论】:

【参考方案10】:

如果您想在您的 cshtml 文件中执行此操作,可以这样编写(包括 LAMBDA 表达式):

<td><b>£@Model.Sum(i => i.Amount)</b></td>

您可以删除 html 标签,我只是将它们留在里面尝试帮助示例。

【讨论】:

以上是关于如何计算asp.net中数据表列的总和?的主要内容,如果未能解决你的问题,请参考以下文章

excel如何计算一列数字的总和?

自动计算数据表页脚中具有数字数据的列的总和

如何根据分组变量计算所有列的总和并删除 NA

ASP.NET MVC 数据表总和列

DolphinDB 数据库中每一行的所有列的总和

如何在Pyspark中计算或管理流数据?