这应该要用到循环相减吧?DataSet 里不能写 sql 语句的

解决方案 »

  1.   

    查询数据库的时候就做好这列最简单了,比如:select 时间,数据1,数据2,数据1-数据2 from table如果在dataset中,就只好新建一列,然后做个for循环,把每一行的值减出来好了。还有更简单的办法吗?
      

  2.   

    DataTable dt=DataSet.Tables[".."];
    dt.Columns["abc"].Expression="Convert(数据`1,'System.Int32')-+Convert(数据2,'System.Int32')";
      

  3.   

    上面的多了一个+
    DataTable dt=DataSet.Tables[".."];
    dt.Columns["abc"].Expression="Convert(数据`1,'System.Int32')-Convert(数据2,'System.Int32')";
      

  4.   

    select 时间,数据1,数据2,(数据1-数据2) as 数据3 from table
      

  5.   

    DataColumn.Expression 属性  [C#]请参见 多看帮助
    DataColumn 类 | DataColumn 成员 | System.Data 命名空间 | DataColumn 成员(Visual J# 语法) | C++ 托管扩展编程 
    要求
    平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版 - Windows CE .NET
    语言
    C#C++JScriptVisual Basic全部显示
    获取或设置表达式,用于筛选行、计算列中的值或创建聚合列。[Visual Basic]
    Public Property Expression As String[C#]
    public string Expression {get; set;}[C++]
    public: __property String* get_Expression();
    public: __property void set_Expression(String*);[JScript]
    public function get Expression() : String;
    public function set Expression(String);属性值
    用来计算列的值,或创建聚合列的表达式。表达式的返回类型由列的 DataType 来确定。异常
    异常类型 条件 
    ArgumentException 将 AutoIncrement 或 Unique 属性设置为 true。 
    FormatException 在使用 CONVERT 函数时,表达式的计算结果为字符串,但该字符串不包含可以转换成类型参数的表示形式。 
    InvalidCastException 在使用 CONVERT 函数时,所请求的强制转换不可能完成。有关可能的强制转换的详细信息,请参见下面的转换函数。 
    ArgumentOutOfRangeException 在使用 SUBSTRING 函数时,起始参数超出范围之外。 
    - 或 -在使用 SUBSTRING 函数时,长度参数超出范围之外。
     
    Exception 在使用 LEN 函数或 TRIM 函数时,表达式的计算结果不是字符串。这包括计算结果为 Char 的表达式。 备注
    Expression 属性的一个用途是创建计算出的列。例如,若要计算税值,就要将单价乘以给定地区的税率。由于各地税率不同,不可能将单一的税率放在列中;于是便用 Expression 属性来计算这个值,如下面的 Visual Basic 代码所示:DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"第二个用途是创建聚合列。类似于计算出的值,聚合基于 DataTable 中的整个行集执行操作。一个简单的示例是对返回到集中的行数进行计数,这也就是您可能用来对某个特定销售人员完成的交易次数进行计数的方法,如下面的 Visual Basic 代码所示:DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"表达式语法在创建表达式时,使用 ColumnName 属性来引用列。例如,如果一个列的 ColumnName 是“UnitPrice”(单价),而另一个是“Quantity”(数量),则表达式将是:"UnitPrice * Quantity"在为筛选器创建表达式时,将字符串放到单引号中:"LastName = 'Jones'"
      

  6.   

    下面的字符是特殊字符,如下面所解释的,如果它们用于列名称中,就必须进行转义:\n (newline)\t (tab)\r (carriage return)~()#\/=><+-*%&|^'"[]如果列名称包含上面的字符之一,该名称必须用中括号括起来。例如,若要在表达式中使用名为“Column#”的列,应写成“[Column#]”:Total * [Column#]由于中括号是特殊字符,如果它是列名称的组成部分,必须使用斜杠 ("\") 将中括号转义。例如,名为“Column[]”的列应写成:Total * [Column[\]](只有第二个中括号必须转义。)用户定义的值用户定义的值可以用在将与列值进行比较的表达式内。字符串值应放在单引号内。日期值应放在磅符号 (#) 内。对于数值,允许使用小数和科学记数法。例如:"FirstName = 'John'""Price <= 50.00""Birthdate < #1/31/82#"对于包含枚举值的列,将值强制转换为整数数据类型。例如:"EnumColumn = 5"