例如,一个DataTable中有A,B,C三列,想要一个文本框中输入相似 (A+C)/B,另一个文本框输入“D”,然后通过按钮,即可在DataTable中新增一个D列,该列每个单元格的内容是 (A+C)/B的计算结果。
解决方案
40
static void Test(DataTable data , string sExpression , string columnname)
{
data.Columns.Add(columnname);
foreach (DataRow row in data.Rows)
{
string sExpressionTemp = sExpression;
foreach (DataColumn colunm in data.Columns)
{
sExpressionTemp = sExpressionTemp.Replace(colunm.ColumnName , row[colunm.ColumnName].ToString( ));
}
row[columnname] = data.Compute(sExpressionTemp , “”);
}
}
测试:
DataTable dt = new DataTable( );
dt.Columns.Add(“A”);
dt.Columns.Add(“B”);
dt.Columns.Add(“C”);
dt.Rows.Add(1 , 2 , 3);
dt.Rows.Add(2 , 4 , 6);
dt.Rows.Add(3 , 5 , 7);
Test(dt , “(A+C)/B” , “D”);
{
data.Columns.Add(columnname);
foreach (DataRow row in data.Rows)
{
string sExpressionTemp = sExpression;
foreach (DataColumn colunm in data.Columns)
{
sExpressionTemp = sExpressionTemp.Replace(colunm.ColumnName , row[colunm.ColumnName].ToString( ));
}
row[columnname] = data.Compute(sExpressionTemp , “”);
}
}
测试:
DataTable dt = new DataTable( );
dt.Columns.Add(“A”);
dt.Columns.Add(“B”);
dt.Columns.Add(“C”);
dt.Rows.Add(1 , 2 , 3);
dt.Rows.Add(2 , 4 , 6);
dt.Rows.Add(3 , 5 , 7);
Test(dt , “(A+C)/B” , “D”);