我有数据表,有两列是字符串的类型,我想为另一列添加那两列数据,我该怎么办?
我的专栏名称包含特殊字符,我使用“[” “]”来转义特殊字符,我的列是我正在做的十进制类型
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";
那么它会给出错误,如由于表达式中的循环引用而无法设置Expression属性。那么什么是解决方案吗?
答案 0 :(得分: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函数,使其返回decimal / currency / int,而不是字符串。
然后在你的前端,做到这一点:
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。
答案 1 :(得分:0)
从te两列中提取数据并调用字符串concat函数。请参阅以下链接