科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用ADO.NET管理数据库

用ADO.NET管理数据库

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍ADO.NET中基于列(column-based)的表达式和计算

作者:陶刚 来源:天极网 2007年11月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
数据列表达式

  表达式也可以通过ADO.NET数据列对象定义。作为通过SQL语句计算扩充价格的替代者,数据列可以被定义用于表现扩充价格。在SQL语句和数据列中使用表达式的区别是,如果表达式中的某个字段被修改了,数据列会自动更新表达式所定义的字段,但SQL表达式不会更新数据列。

  下面的代码演示了怎样使用SQL语句填充数据集的数据表并建立一个新数据列描述计算表达式,该表达式使用数据集的唯一数据表中的其它字段得到。接着该数据表的默认视图被绑定到ASP.NET的一个叫做grdOrderDetail 的DataGrid控件。

  这段代码使用订单详细信息建立和填充了一个数据集。接着一个列被添加到该数据集的数据表,用于表现该表达式。该列叫ExtendedPrice,数据类型为浮点型,它的表达式是产品单价和数量列。该表达式能涉及数据表的任意数据列,从当前的数据行中取得值。例如,如果第一行数量为10,单价为7,扩充价格列将使用的值为70。

  在计算中表达式可以包括从数据表中其它字段得到的字面值。例如,定义扩充价格的表达式可以稍作改变,使它考虑折扣率:

oDs.Tables["OrderDetail"].Columns.Add("ExtendedPrice",
typeof(decimal), "(UnitPrice * Quantity) * (1 - Discount)");

  试着改变UnitPrice、Discount或Quantity数据列的值,结果是与从SQL表达式衍生的列不同,ExtendedPrice数据列也被更新了。该特征对应用程序很重要,特别是在用户能修改购物车,确认改变,然后查看更新后的总价格的情况下。

  表达式也可以用于表现其它数据类型,例如逻辑型和字符型值。下面的代码演示了添加一个字段用于显示一个作者是否有折扣:

oDs.Tables["OrderDetail"].Columns.Add("GetsDiscount", typeof(bool),
"Discount > 0");

  你能使用AND、OR或NOT条件建立混合表达式来考虑多个条件,这样可以加强前面的表达式。还有一些操作符,包括LIKE和IN也可以在表达式中使用。

  表达式也能表现字符串值,例如从数据表中取得姓和名并连接到一起。下面的代码段将ProductName与ProductID连接在一起:

oDs.Tables["OrderDetail"].Columns.Add("stringfield", typeof(string),
"ProductID + '-' + ProductName");

  函数

  如果你希望列包含有更复杂逻辑的表达式,可以在列中嵌入一些函数。表达式能包含Len、Iif、 IsNull、Convert、Trim和Substring等函数。这些函数为建立表达式提供了更大的灵活性。Len函数计算字符串的长度:

oDs.Tables["OrderDetail"].Columns.Add("LengthOfProductName",
typeof(int), "Len(ProductName)");

  Iif函数是一个迭代的If语句,象Visual Basic .NET中的IIf一样。它有三个参数并计算第一个参数的真假。如果第一个参数计算值为真,将从Iif函数返回第二个参数,否则返回第三个参数。下面基本上是一个浓缩的If...Then...Else语句,能简单地写成嵌入表达式:

oDs.Tables["OrderDetail"].Columns.Add("Inventory", typeof(string),
"Iif(Quantity < 10,'A few left', 'Plenty in stock')");

  IsNull函数计算第一个参数,看它是否与System.DbNull相等。如果计算结果为假,函数返回第一个参数值,如果为真则返回第二个参数值。这在不允许空值,并且希望用空字符串或占位符代替时使用:

oDs.Tables["OrderDetail"].Columns.Add("DiscountString",
typeof(string), "IsNull(Discount, '[null value]')");

  Trim函数删除字符串值尾部的空格。Convert函数将表达式中的数据类型转换为函数第二个参数所指的数据类型。Substring函数返回字符串的一部分,可用于将长字符串剪短,只显示定长的字符串,它可以返回字符串的任意部分并根据需要与其它的函数组合使用:

oDs.Tables["OrderDetail"].Columns.Add("ShortProduct",
typeof(string), "Substring(ProductName, 1, 10)");
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章