2

我有一个包含一列(“利润”)的数据表。我想要的是获得此表中所有值的总和。我试图以下列方式做到这一点......

DataTable dsTemp = new DataTable();

dsTemp.Columns.Add("Profit");

DataRow dr = null;

dr = dsTemp.NewRow();
dr["Profit"] = 100;
dsTemp.Rows.Add(dr);

dr = dsTemp.NewRow();
dr["Profit"] = 200;
dsTemp.Rows.Add(dr);

DataView dvTotal = dsTemp.DefaultView;
dvTotal.RowFilter = " SUM ( Profit ) ";

DataTable dt = dvTotal.ToTable();

但是我在应用过滤器时遇到错误...如何在变量中获取利润列的总和

谢谢你...

4

2 回答 2

4

将数据列设置为数字类型(int、decimal 等):

DataColumn col = new DataColumn("Profit", typeof(int));
dsTemp.Columns.Add(col);

使用计算

int total = dsTemp.Compute("Sum(Profit)", "");

请注意,聚合不是一种过滤器,这是您正在使用的方法的主要问题。

于 2010-05-24T11:00:47.173 回答
0

我按照建议使用了 DataTable 的 Compute 方法,效果很好。我应用了与 DataView(用于在数据网格中显示排序和过滤的数据)相同的过滤以及聚合函数。

string SingleVocheridSale ="1";

 DataView view = new DataView(dt);
 view.RowFilter = string.Format("VOCHID='" + SingleVocheridSale + "'");
 dataGridview1.DataSource = view;
 object sumObject;
 sumObject = dt.Compute("Sum(NETAMT)", view.RowFilter);
 lable1.Text = sumObject.ToString();
于 2018-06-22T06:22:07.180 回答