数据表的行计算功能

时间:2008-12-05 15:29:03

标签: asp.net datatable

我们知道,使用datatable的计算功能,我们可以得到列的总和。 但我希望获得一行数据表的总和。 我将用一个例子来解释:

我有一个像下面这样的数据图:通过计算功能,我们可以得到每列(产品)的总和。例如对于product1,2 + 12 + 50 + 13 = 77。

我想获得company1:2 + 6 + 4 + 3 + 5 = 20

的总和

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

如何使用asp.net 1.1进行操作?

4 个答案:

答案 0 :(得分:2)

来自msdn

  

如果您必须执行操作   您应该创建两个或更多列   一个DataColumn,设置它的表达式   财产到适当的表达,   并使用聚合表达式   结果列。在那种情况下,给定   一个名为“total”的DataColumn,   并将Expression属性设置为   这样:

     

"Quantity * UnitPrice"

答案 1 :(得分:2)

LINQ救援:

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

对于那些在石器时代仍然拖着他们指关节的人(又名pre-.Net 3.5和LINQ):

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

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

答案 2 :(得分:2)

由于你想在1.1中解决这个问题,你可以做一个简单的解决方案

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.

答案 3 :(得分:0)

我们可以将Datatable的Compute()函数用于以下目的:

  • 求和。
  • 查找最大值。
  • 查找最小值。
  • 计算平均值。

下面的链接详细介绍了Datatable的compute()函数:

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

希望这会对您有所帮助。

谢谢。