mavera
mavera

Reputation: 3241

Datatable's Compute Function For Rows

As we know that, with compute function of datatable we can get sum of columns. But I want to get sum of a row of datatable. I will explain with a example:

I have a datatable like image below: With compute function we can get the sum of each column (product). Such as for product1, 2 + 12 + 50 + 13= 77.

I want to get sum of company1 : 2 + 6 + 4 + 3 + 5 = 20

http://img123.imageshack.us/img123/1517/61519307xx5.jpg

How can I do it with asp.net 1.1?

Upvotes: 4

Views: 6377

Answers (4)

Shantilal Suthar
Shantilal Suthar

Reputation: 127

We can use Datatable's Compute() function for the following purpose:

  • To find sum.
  • To find max value.
  • To find min value.
  • To calculate average.

Below links have detailed explaination of Datatable's compute() function:

http://codevariation.blogspot.com/2017/02/using-datatable-compute-function-in-cnet.html

Hope this will help you.

Thanks.

Upvotes: 0

Binoj Antony
Binoj Antony

Reputation: 16196

Since you want to solve this in 1.1 here is what you can do as a simple solution

DataColumn totalColumn = new DataColumn();
totalColumn.DataType = System.Type.GetType("System.Int32");
totalColumn.ColumnName = "Total";
totalColumn.Expression = "Product1 + Product2 + Product3 + Product4 + Product5";

// Populate and get the DataTable dt then add this computed column to this table

dt.Columns.Add(totalColumn);
//Now if you access the column "Total" of the table you will get the desired result.

Upvotes: 2

Jason Jackson
Jason Jackson

Reputation: 17260

LINQ to the rescue:

DataTable dt = WhateverCreatesDataTable();
DataRow dr = dt.Rows[0];
int sum = dt.Columns.Cast<DataColumn>().Sum(dc=>(int)dr[dc]);

For those still dragging their knuckles in the stone ages (aka pre-.Net 3.5 and LINQ):

DataTable dt = WhateverCreatesDataTable();
DataRow dr = dt.Rows[0];
int sum = 0;

foreach(DataColumn dc in dt.Columns)
  sum += (int)dr[dc];

Upvotes: 2

Galwegian
Galwegian

Reputation: 42227

From msdn:

If you must perform an operation on two or more columns, you should create a DataColumn, set its Expression property to an appropriate expression, and use an aggregate expression on the resulting column. In that case, given a DataColumn with the name "total", and the Expression property set to this:

"Quantity * UnitPrice"

Upvotes: 2

Related Questions