我有一个DataTable,它有一列(“Profit”)。我想要的是获得此表中所有值的总和。我试着用以下方式做到这一点......
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();
但是我在应用过滤器时遇到错误... 如何在变量
中获得Profit列的总和 谢谢......答案 0 :(得分:3)
将数据列设置为数字类型(int,decimal,whatever):
DataColumn col = new DataColumn("Profit", typeof(int));
dsTemp.Columns.Add(col);
使用Compute:
int total = dsTemp.Compute("Sum(Profit)", "");
请注意,聚合不是一种过滤器,这是您正在使用的方法的主要问题。
答案 1 :(得分: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();