Datatable.Compute运行时错误

时间:2013-06-21 10:59:02

标签: c#

我想从数据表的列中获取最大值!!

我的数据表的值为

Column1                 Date                    Column2  Column3  Column4

Electricity(KWH)    06/Jun/2013 00:00:00    99.00    43.00    56.00
Electricity(KWH)    14/Jun/2013 00:00:00    260.00   48.00    212.00

当我给出

enter code here

   double a = Convert.ToDouble( dtChart.Compute("MAX(Column2)", "")); 
   variable a has value 260

但是在使用时

         for (int i = 3; i < dtChart.Columns.Count; i++)
         {
             string a = dtChart.Columns[i].Caption; //a has value 'Column2';
             double maxYval = Convert.ToDouble(dtChart.Compute("MAX('"+a+"')",""));
         }

它显示异常,因为//将错误显示为“聚合参数中的语法错误:期望具有可能'Child'限定符的单个列参数。” 该怎么做。请帮忙

2 个答案:

答案 0 :(得分:1)

我怀疑是因为你在这里引用它:

"MAX('"+a+"')"

如果你想得到的话:

"MAX(Column2)"

然后你需要:

"MAX(" + a + ")"

或者:

string.Format("MAX({0})", a)

答案 1 :(得分:0)

如果您想要更易读且更不容易出错的方法,请使用Linq-To-DataSet

IEnumerable<DataRow> rows = dtChart.AsEnumerable();
double col2Max = rows.Max(r => r.Field<double>("Column2"));
double col3Max = rows.Max(r => r.Field<double>("Column3"));
double col4Max = rows.Max(r => r.Field<double>("Column4"));