0

我有数据表,有两列是字符串类型,我想为另一列添加这两列数据,我该怎么做?

我的列名包含特殊字符,我使用“[” “]”来转义特殊字符,我的列是我正在做的十进制类型

 TableExtractedFromFile.Columns[TOT BROK(Rs)].Expression = 
                "'"+"["+SER TAX(Rs)+"]"+"'+'"+"["+STT(Rs)+"]"+"'";

但是 TOT BROK(Rs) 列包含 SER TAX(Rs) 和 STT(Rs) 列的值的连接。但我想要这两列值的总和。

编辑 它有效。但是如果我确实喜欢,则有三列 A、B 和 C。现在如果我这样做,table.columns["A"].expression = "A+B+C";它会给出错误,例如由于表达式中的循环引用而无法设置表达式属性。那么解决方案是什么?

4

2 回答 2

1

用这个:

dt.Columns.Add("fullname", typeof(string));
dt.Columns["fullname"].Expression = "lastname + ', ' + firstname";

对于添加值(Total、Amount 和 Surcharge 是您现有的列,并且是字符串类型,您需要将 CONVERT 函数放在列名中,以便它们将被转换为十进制(System.Decimal),如果 int 使用 System.Int32 或System.Int64 等):

dt.Columns["Total"].Expression = 
  "CONVERT(Amount,System.Decimal) + CONVERT(Surcharge,System.Decimal)";

[编辑]

只需在您的后端执行此操作:

    select *, CONVERT(SERTAX(Rs), DECIMAL) 
        + CONVERT(STT(Rs), DECIMAL) AS brokerage 
    from tbl

如果您在数据库中有控制权,请修改 SERTAX 和 STT 函数,以便它可以返回十进制/货币/整数,而不是字符串。

然后在你的前端,这样做:

dt.ColumnChanging += (ds, de) =>
{
    if (de.Column.ColumnName == "Rs")
    {
        decimal serTaxResult = (decimal)new SqlCommand("select SERTAX(" + de.ProposedValue + ")").ExecuteScalar();
        decimal sttResult = (decimal)new SqlCommand("select STT(" + de.ProposedValue + ")").ExecuteScalar();

        // if your SERTAX AND STT really return string, use this:                        
        // decimal serTaxResult = decimal.Parse( (string) new SqlCommand("select SERTAX(" + de.ProposedValue + ")").ExecuteScalar() );
        // decimal sttResult = decimal.Parse( (string) new SqlCommand("select STT(" + de.ProposedValue + ")").ExecuteScalar() );


        de.Row["brokerage"] = serTaxResult + sttResult;
    }
};

[编辑]

如果所有列都是字符串类型,则必须用它们自己的 CONVERT 将它们括起来。

.Expression = string.Format("CONVERT({0},System.String)", 

      "CONVERT(" + serviceTaxClmnInCNote  + ", System.Int32)"
      + " + " 
      + "CONVERT(" + STTClmnInCNote + ", System.Int32)"

      );

如果 serviceTax 和 STT 是货币类型,只需将 System.Int32 更改为 System.Decimal。

于 2010-05-07T07:26:02.930 回答
0

从两列中提取数据并调用字符串 concat 函数。请参考以下链接

http://www.1keydata.com/sql/sql-concatenate.html

于 2010-05-07T07:28:20.407 回答