Использовать это:
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)"
);
Просто измените System.Int32 на System.Decimal, если serviceTax и STT относятся к денежному типу.
person
Michael Buen
schedule
07.05.2010
dt.Columns["Fullname"].Expression = "Lastname || ', ' || Firstname"
, это не сработает, вам все равно придется использовать+
для конкатенации вместо||
- person Michael Buen   schedule 07.05.2010foreach(DataRow r in dt.Rows) r["A"] = r["A"] + r["B"] + r["c"];
- person Michael Buen   schedule 07.05.2010A
и добавлю в эту таблицу данных как имяAAA
, а после этого сделаюA = B + C + AAA
, то также выдаст ту же ошибку. - person Harikrishna   schedule 07.05.2010foreach(DataRow r in dt.Rows) r["A"] = r["A"] + r["B"] + r["c"];
выдает синтаксическую ошибку. - person Harikrishna   schedule 07.05.2010