4

我试图在列中获得平均损益。该列是 double 类型,但是我不断收到一条错误消息:

附加信息:聚合参数中的语法错误:需要一个可能带有“子”限定符的列参数。

执行此行时会发生这种情况:

avgFiveSbefore = (double)dt.Compute("AVG(5sBeforePnL)", "");

此外,这里有一些额外的代码来澄清:

dt.Columns.Add(Columns.FiveSecBeforePnL, typeof(double));

foreach(DataRow row in dt.Rows)
{
  row[Columns.FiveSecBeforePnL] = some value;
}

double avgFiveSbefore;
avgFiveSbefore = (double)dt.Compute("AVG(5sBeforePnL)", "");
4

1 回答 1

7

尝试将列名括在方括号中。

avgFiveSbefore = (double)dt.Compute("AVG([5sBeforePnL])", "");

你也可以使用 LINQ 来做同样的事情:

double avgFiveSbefore = dt.AsEnumerable()
                            .Average(r =>
                                r.Field<double>(Columns.FiveSecBeforePnL));
于 2014-02-25T18:47:22.580 回答