最近为.NET项目编码,为了少写代码,直接用DataSet,DataTable等现成微软封装好的组件,对于Sum()、Count()等计算,DataTable提供了配套的方法Founction Compute():
DataTable.Compute 方法
DataTable.Compute 方法
2007-03-22 17:53
.
DataTable.Compute 方法
计算用来传递筛选条件的当前行上的给定表达式。
命名空间:System.Data
程序集:System.Data(在 system.data.dll 中)
Visual Basic(声明)
Public Function Compute ( _
expression As String,_
filter As String _
) As Object
Visual Basic(用法)
Dim instance As DataTable
Dim expression As String
Dim filter As String
Dim returnValue As Object
returnValue = instance.Compute(expression,filter)
C#
public Object Compute (
string expression,
string filter
)
C++
public:
Object^ Compute (
String^ expression,
String^ filter
)
J#
public Object Compute (
String expression,
String filter
)
JScript
public function Compute (
expression : String,
filter : String
) : Object
参数
- expression
-
要计算的表达式。
- filter
-
要限制在表达式中进行计算的行的筛选器。
返回值
Object,设置为计算结果。
备注
expression 参数需要聚合函数。例如,以下是合法表达式:
Count(Quantity)
但是以下表达式不合法:
Sum (Quantity * UnitPrice)
如果必须针对两列或多列执行操作,则应该创建 DataColumn,并将它的 Expression 属性设置为适当的表达式,然后针对结果列使用聚合表达式。在这种情况下,假定有一个名为“total”的 DataColumn,并且 Expression 属性设置为:
"Quantity * UnitPrice"
Compute 方法的表达式参数将为:
Sum(total)
第二个参数 filter 确定在表达式中使用哪些行。例如,如果该表包含名为“colDate”的日期列,则可用以下表达式限制这些行:
colDate > 1/1/99 AND colDate < 17/1/99
有关为这两个参数创建表达式的规则,请参见 DataColumn.Expression 属性。
下面的示例针对识别号码为五的销售人员,对名为“Total”(合计)的列的值求和。
Visual Basic
Private Sub ComputeBySalesSalesID(ByVal dataSet As DataSet)
' Presumes a DataTable named "Orders" that has a column named "Total."
Dim table As DataTable
table = dataSet.Tables("Orders")
' Declare an object variable.
Dim sumObject As Object
sumObject = table.Compute("Sum(Total)","EmpID = 5")
End Sub
C#
private
void ComputeBySalesSalesID(DataSet dataSet)
{
// Presumes a DataTable named "Orders" that has a column named "Total."
DataTable table;
table = dataSet.Tables["Orders"];
// Declare an object variable. object sumObject; sumObject = table.Compute("Sum(Total)","EmpID = 5");