Используйте это:
dt.Columns.Add("fullname", typeof(string));
dt.Columns["fullname"].Expression = "lastname + ', ' + firstname";
Для добавления значения (Total, Amount и Surcharge являются вашими существующими столбцами и являются типом string, вам необходимо поместить функцию CONVERT в имена столбцов, чтобы они были преобразованы в десятичные (System.Decimal), если int использует System .Int32 или System.Int64 и т. Д.):
dt.Columns["Total"].Expression =
"CONVERT(Amount,System.Decimal) + CONVERT(Surcharge,System.Decimal)";
[EDIT]
Просто сделайте это в своем бэкэнде:
select *, CONVERT(SERTAX(Rs), DECIMAL)
+ CONVERT(STT(Rs), DECIMAL) AS brokerage
from tbl
Если у вас есть контроль в вашей базе данных, измените функции SERTAX и STT, чтобы она могла возвращать десятичную / 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;
}
};
[EDIT]
Если все ваши столбцы строкового типа, вы должны заключить каждый из них в свои собственные CONVERT.
.Expression = string.Format("CONVERT({0},System.String)",
"CONVERT(" + serviceTaxClmnInCNote + ", System.Int32)"
+ " + "
+ "CONVERT(" + STTClmnInCNote + ", System.Int32)"
);
Просто измените System.Int32 на System.Decimal, если serviceTax и STT относятся к типу денег.