我有一个DataTable有5列:
DataTable包含5行。
如何将标签控件中的金额列的总和显示为“总金额”?
答案 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 标签,我只是将它们留在了示例中。