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

时间:2011-05-05 05:18:26

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

我有一个DataTable有5列:

  • ID
  • 名称
  • 帐号
  • 分行
  • 金额

DataTable包含5行。

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

10 个答案:

答案 0 :(得分:121)

要计算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();

答案 1 :(得分:29)

 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();

答案 2 :(得分:15)

你可以这样做..

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

答案 3 :(得分:8)

如果您有ADO.Net DataTable,则可以

int sum = 0;
foreach(DataRow dr in dataTable.Rows)
{
   sum += Convert.ToInt32(dr["Amount"]);
}

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

Select Sum(Amount) From DataTable

答案 4 :(得分:5)

  public decimal Total()
    {
      decimal decTotal=(datagridview1.DataSource as DataTable).Compute("Sum(FieldName)","");
      return decTotal;
    }

答案 5 :(得分:4)

在Datatable中计算列的总和,Works 100%

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

如果您想要有任何条件,请像这样使用

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

答案 6 :(得分:2)

您可以按名称分组使用Linq

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

使用名称空间using System.Linq;

您可以使用c Myblog

在数据表中找到样本总数,小计,总计

答案 7 :(得分:0)

试试这个

int sum = 0;
foreach (DataRow dr in dt.Rows)
{
     dynamic value = dr[index].ToString();
     if (!string.IsNullOrEmpty(value))
     { 
         sum += Convert.ToInt32(value);
     }
}

答案 8 :(得分:0)

我认为这解决了

using System.Linq;


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

答案 9 :(得分:0)

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

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

您可以删除 html 标签,我只是将它们留在了示例中。