【发布时间】:2011-02-16 17:22:20
【问题描述】:
我有数据表,有两列是字符串类型,我想为另一列添加这两列数据,我该怎么做?
我的列名包含特殊字符,我使用 "[" "]" 来转义特殊字符,我的列是我正在做的小数类型
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"; 那么它会给出错误,例如 Cannot set Expression property due to circular reference in the expression. 那么什么是解决方案?
【问题讨论】:
-
SERTAX 函数是在数据库中定义的吗?顺便说一句,关于 DataTable,虽然它模仿了 Sql Server 的一些功能,但它与 Sql Server(或任何 RDBMS)功能/功能无关。 DataTable 功能与底层数据库无关。即使你的数据库有内置函数SERTAX,它仍然不能在Column的Expression中工作。
-
为了证明DataTable Column的Expression功能和你的数据库能力没有关系,如果你用的是Oracle或者Postgres,尝试做:
dt.Columns["Fullname"].Expression = "Lastname || ', ' || Firstname",这样不行,你还是要用@ 987654324@ 用于连接而不是|| -
最后一个错误(不能设置表达式...循环...),你不能做那种事情。这就像你在Excel的B2列中有一个公式,而公式是B2 + C2,不可能。你可以做的是循环你的DataTable的DataRow。
foreach(DataRow r in dt.Rows) r["A"] = r["A"] + r["B"] + r["c"]; -
@Micheal,即使我复制列
A并将其添加到该数据表中作为AAA的名称,然后我执行A = B + C + AAA,它也会给出相同的错误。 -
@Micheal,正如你所描述的,
foreach(DataRow r in dt.Rows) r["A"] = r["A"] + r["B"] + r["c"];给出了语法错误。
标签: c# winforms datatable datacolumn