DataTable系列之02-DataColumn.Expression属性

 DataColumn.Expression属性范例代码:

  MSDN地址: http://msdn.microsoft.com/en-us/library/system.data.datatable.compute.aspx

 下面的示例在 DataTable 中创建三个列。第二和第三列包含表达式;第二列使用可变税率计算税款,第三列将计算的结果添加到第一列的值。结果表显示在 DataGrid 控件中。

View Code
 1 private void CalcColumns()
 2 {
 3     DataTable table = new DataTable ();
 4  
 5     // Create the first column.
 6     DataColumn priceColumn = new DataColumn();
 7     priceColumn.DataType = System.Type.GetType("System.Decimal");
 8     priceColumn.ColumnName = "price";
 9     priceColumn.DefaultValue = 50;
10      
11     // Create the second, calculated, column.
12     DataColumn taxColumn = new DataColumn();
13     taxColumn.DataType = System.Type.GetType("System.Decimal");
14     taxColumn.ColumnName = "tax";
15     taxColumn.Expression = "price * 0.0862";
16      
17     // Create third column.
18     DataColumn totalColumn = new DataColumn();
19     totalColumn.DataType = System.Type.GetType("System.Decimal");
20     totalColumn.ColumnName = "total";
21     totalColumn.Expression = "price + tax";
22 
23     // Add columns to DataTable.
24     table.Columns.Add(priceColumn);
25     table.Columns.Add(taxColumn);
26     table.Columns.Add(totalColumn);
27 
28     DataRow row = table.NewRow();
29     table.Rows.Add(row);
30     DataView view = new DataView(table);
31     dataGrid1.DataSource = view;
32 }

 

  1.  在创建表达式时,使用 ColumnName 属性来引用列。例如,如果一个列的 ColumnName 是“UnitPrice”,而另一个是“Quantity”,则表达式将是:

"UnitPrice * Quantity"

 

  2.  在为筛选器创建表达式时,用单引号将字符串括起来: "LastName = 'Jones'"

 

  3.  用户定义的值可以用在将与列值进行比较的表达式内。字符串的值应括在单引号内。日期值应放在磅符号 (#) 内。对于数值,允许使用小数和科学记数法。

      例如:"FirstName = 'John'"     "Price <= 50.00"     "Birthdate < #1/31/82#" 

      对于包含枚举值的列,将值强制转换为整数数据类型。例如:"EnumColumn = 5"

 

  4.  通配符

    在 LIKE 比较中,* 和 % 两者可以互换地作为通配符。如果 LIKE 子句中的字符串包含 * 或 %,那么这些字符应用中括号([])对其进行转义。如果子句中有中括号,那么中括号字符应用中括号对其进行转义(例如 [[] 或 []])。在模式的开头和结尾,或者在模式的结尾,或在模式的开头,都允许使用通配符。例如:

      "ItemName LIKE '*product*'"

      "ItemName LIKE '*product'"

      "ItemName LIKE 'product*'"

     在字符串的中间不允许使用通配符。例如,不允许 'te*xt'。

 

  5.  父/子关系引用

       通过在列名称前面加 Parent,就可以在表达式中引用父表。例如,Parent.Price 引用父表的名为 Price 的列。

       通过在列名称前面加一个 Child,就可以在表达式中引用子表中的列。但是,因为子关系可以返回多行,所以必须在聚合函数中包括对子列的引用。例如,Sum(Child.Price) 将返回子表中名为 Price 的列的总和。

    如果某个表有多个子表,则语法是:Child(RelationName)。例如,如果某个表有两个子表,它们的名称分别为 Customers 和 Orders,并且 DataRelation 对象被命名为Customers2Orders,则引用将为:Avg(Child(Customers2Orders).Quantity)

 

  6. IsNull  

      例如:myDataColumn.Expression="IsNull(price, -1)"

 

  7. IIF

       例如:myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')

 

  8. SubString

      格式: SUBSTRING(expression, start, length)

     myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"

 

  9. Len

      myDataColumn.Expression="Len(ItemName)"

      

posted @ 2012-09-03 10:14  C#老头子  Views(3096)  Comments(0Edit  收藏  举报