사용이 :
dt.Columns.Add("fullname", typeof(string));
dt.Columns["fullname"].Expression = "lastname + ', ' + firstname";
(총, 금액 및 추가 요금은 그들이에 캐스트 할 수 있도록 당신이 당신의 열 이름에 CONVERT 기능을 둘 필요, 기존의 열이며, 입력 문자열입니다 값의 추가에 대한 진수 (System.Decimal), INT 사용 선택 System.Int32 또는 System.Int64 등)의 경우 :
dt.Columns["Total"].Expression =
"CONVERT(Amount,System.Decimal) + CONVERT(Surcharge,System.Decimal)";
[편집]
그냥 할 백엔드에서 그것은 : 당신이 당신의 데이터베이스에서 제어 할 경우 소수점/통화/INT가 아닌 문자열을 반환 할 수 있습니다
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;
}
};
[편집]
모든 열이 문자열 유형 인 경우, 당신이 가지고 자신의 개종자로 각각 동봉.
.Expression = string.Format("CONVERT({0},System.String)",
"CONVERT(" + serviceTaxClmnInCNote + ", System.Int32)"
+ " + "
+ "CONVERT(" + STTClmnInCNote + ", System.Int32)"
);
serviceTax 및 STT가 money 유형 인 경우 System.Int32를 System.Decimal로 변경하십시오.
입니다 참조하십시오? btw, DataTable에 관해서는, 그것은 Sql Server의 기능 중 일부를 모방했지만 Sql Server (또는 그 문제에 대해서는 RDBMS) 기능/기능과 관련이 없습니다. DataTable 기능은 기본 데이터베이스와 아무런 관련이 없습니다. 데이터베이스에도 내장 함수 SERTAX가 있지만 열의 표현식에서는 여전히 작동하지 않습니다. –
Oracle 또는 Postgres를 사용하는 경우 DataTable Column의 Expression 기능이 데이터베이스 기능과 아무런 관련이 없음을 증명하려면 다음을 수행하십시오.'dt.Columns [ "Fullname"].Expression = "Lastname || ','|| Firstname"', 이것은 작동하지 않을 것입니다. 여러분은 여전히'|| '대신에'+'를 사용해야합니다. –
마지막 오류 (표현식을 순환 할 수 없습니다 ..)), 당신은 그런 종류의 일을 할 수 없습니다. 마치 Excel의 B2 열에 수식이 있고 B2 + C2 수식이 아닌 것입니다. 할 수있는 일은 DataTable의 DataRow를 반복하는 것입니다. 'A "] = r ["A "] + r ["B "] + r ["c "]; ' –