DataTable.Compute()用法
一、DataTable.Compute()方法說明如下
作用:
计算用来传递筛选条件的当前行上的给定表达式。 格式為: Object Compute (string expression,string filter) 参数: Expression說明: 表达式语法 //得到menu1表中order列中最大值 二、創建Expression說明: 2.1、在为筛选器创建表达式时,用单引号将字符串括起来: "LastName = 'Jones'" 2.1.1特殊字符處理:
2.1.2 轉義方法為: Total * [Column#] 由于中括号是特殊字符,如果它是列名称的组成部分,必须使用斜杠 (""") 将中括号转义。例如,名为“Column[]”的列应写成: Total * [Column["]] (只有第二个中括号必须转义。) 2.2、用户定义的值處理 "FirstName = 'John'" 2.2.2含枚举值的列,将值强制转换为整数数据类型。例如: "EnumColumn = 5" 2.3、运算符 (LastName ='Smith' OR LastName ='Jones') AND FirstName ='John' 2.3.2 在创建比较表达式时,允许使用下列运算符:
2.3.3 在表达式中还支持下列算术运算符:
2.4、字符串运算符處理 2.5、通配符 "ItemName LIKE '*product*'" 在字符串的中间不允许使用通配符。例如,不允许 'te*xt'。 2.6、父/子关系引用 2.7、聚合
聚合通常沿着关系执行。通过使用上面列出的函数之一和上面“父/子关系引用”中详述的子表列,来创建聚合表达式。例如: 聚合也可以在单个表上执行。例如,若要为名为“Price”的列中的数字创建汇总,就用: 如果表没有行,聚合函数将返回 空引用(在 Visual Basic 中为 Nothing)。 2.8、支持下列函数: 2.8.1 CONVERT myDataColumn.Expression="Convert(total, 'System.Int32')" 所有转换都是有效的,只有下列情况例外:Boolean 只能与 Byte、SByte、Int16、Int32、Int64、UInt16、UInt32、UInt64、String 和它本身相互转换。Char 只能与 Int32、UInt32、String 和它本身相互转换。DateTime 只能与 String 和它本身相互转换。TimeSpan 只能与 String 和它本身相互转换。 2.8.2 LEN 例如:myDataColumn.Expression="Len(ItemName)" 2.8.3 ISNULL 例如:myDataColumn.Expression="IsNull(price, -1)" 2.8.5 IIF 例如:myDataColumn.Expression ="IIF(total>1000, 'expensive', 'dear') 2.8.6 TRIM 2.8.7 SUBSTRING 例如:myDataColumn.Expression ="SUBSTRING(phone, 7, 8)" DataTable.Compute方法使用实例
using System; |
多个字段建立父子关系
Private Sub CreateRelation()
' Get the DataColumn objects from two DataTable objects in a DataSet.
Dim parentCols() As DataColumn
Dim childCols() As DataColumn
' Code to get the DataSet not shown here.
parentCols() = DataSet1.Tables("Customers").Columns("CustID")
parentCols() = DataSet1.Tables("Customers").Columns("OrdID") childCols() = DataSet1.Tables("Orders").Columns("CustID")
childCols() = DataSet1.Tables("Orders").Columns("OrdID")
' Create DataRelation.
Dim CustOrderRel As DataRelation
CustOrderRel = New DataRelation("CustomersOrders", parentCols, childCols)
' Add the relation to the DataSet.
DataSet1.Relations.Add(CustOrderRel)
End Sub