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

我有一个包含 5 列的 DataTable:

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

DataTable 包含 5 行。

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

【问题讨论】:

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

标签: c# asp.net user-controls datatable


【解决方案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 标签,我只是将它们留在里面尝试帮助示例。

                  【讨论】:

                    猜你喜欢
                    • 2020-10-31
                    • 1970-01-01
                    • 2015-06-16
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-03-25
                    • 1970-01-01
                    • 2020-01-02
                    • 1970-01-01
                    相关资源
                    最近更新 更多