Search code examples
c#datatabledataviewaggregate-functionsfilter

Using Aggregate functions in DataView filters


i have a DataTable that has a column ("Profit"). What i want is to get the Sum of all the values in this table. I tried to do this in the following manner...

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

But i get an error while applying the filter... how can i get the Sum of the Profit column in a variable

thank you...


Solution

  • Set the datacolumn to a numeric type (int, decimal, whatever):

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

    Use Compute:

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

    Note that aggregation is not a type of filter, which is the main problem with the approach you are tyring.