众所周知,通过数据表的计算功能,我们可以得到列的总和。但我想得到一行数据表的总和。我将用一个例子来解释:
我有一个如下图所示的数据表:使用计算功能,我们可以获得每列(产品)的总和。比如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 做到这一点?
众所周知,通过数据表的计算功能,我们可以得到列的总和。但我想得到一行数据表的总和。我将用一个例子来解释:
我有一个如下图所示的数据表:使用计算功能,我们可以获得每列(产品)的总和。比如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 做到这一点?
来自msdn:
如果必须对两个或更多列执行操作,则应创建一个 DataColumn,将其 Expression 属性设置为适当的表达式,并在结果列上使用聚合表达式。在这种情况下,给定一个名为“total”的 DataColumn,并将 Expression 属性设置为:
"Quantity * UnitPrice"
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];
由于您想在 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.
我们可以将 Datatable 的 Compute() 函数用于以下目的:
以下链接详细解释了 Datatable 的 compute() 函数:
http://codevariation.blogspot.com/2017/02/using-datatable-compute-function-in-cnet.html
希望这会帮助你。
谢谢。