2014-02-25 179 views
2

我試圖在列中獲取平均值P & L.該列是double類型的,但是我不斷收到一個錯誤,內容如下:C#Datatable:計算列中的平均值

附加信息:語法錯誤在聚合參數中:期望有可能的'Child'限定符的單個列參數。

當這條線被執行,就會出現此:

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)", ""); 
+0

你能嘗試改變列名的東西,不以數字開頭?只是想這可能是原因。 –

回答

4

嘗試在方括號包圍列名。

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

您還可以使用LINQ做同樣類似:

double avgFiveSbefore = dt.AsEnumerable() 
          .Average(r => 
           r.Field<double>(Columns.FiveSecBeforePnL)); 
+0

總是用我笨拙的語法錯誤來拯救我,謝謝! @Habib – kknaguib

+0

@kknaguib,不客氣 – Habib