如何计算数据表的表达式

时间:2011-03-30 06:54:58

标签: c#

当前代码:

foreach (Expressions e in expressionObj)
{
   if ((e.Expression != null) && (e.ColumnName != null))
   {
      newtable1.Columns.Add(new DataColumn(e.ColumnName, typeof(decimal), e.Expression));
   }   
} 

我有一个ID + ID的表达式,它作为新的列添加到数据表中作为SUM-ID,其中ID = 2,但得到的结果是22而不是4。

1 个答案:

答案 0 :(得分:4)

让我们看看:

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(decimal)));
dt.Columns.Add(new DataColumn("SUM-ID", typeof(decimal), "ID + ID"));
var row = dt.NewRow();
row["ID"] = 2;
dt.Rows.Add(row);
var val = dt.Rows[0]["SUM-ID"];

结果:val符合预期4 我们试试别的:

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(string)));
dt.Columns.Add(new DataColumn("SUM-ID", typeof(decimal), "ID + ID"));
var row = dt.NewRow();
row["ID"] = "2";
dt.Rows.Add(row);
var val = dt.Rows[0]["SUM-ID"];

结果:val22

结论:您的ID列的类型为字符串,但它必须是数字类型,否则使用字符串连接。

更新:如果您不能(或不想)设置列的数据类型,那么您可以在表达式中使用Convert2 * Convert(ID, 'System.Int32')