用这个:
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。