如何计算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中数据表列的总和?的主要内容,如果未能解决你的问题,请参考以下文章