2014-04-09 27 views
0

我有一個數據表,其中有兩列名爲col1和col2。我想獲得每行的(col1 * col2)的總和。 我正在使用以下代碼..如何獲得兩列乘法的總和

object sumObject; 
sumObject = dt.Compute("Sum(col1* col2)", "(id = '" + id+ "') "); 

但它不起作用。它產生一個錯誤:

Syntax error in aggregate argument: Expecting a single column argument with possible 'Child' qualifier. 

回答

4

更可讀的方式是使用LINQ-To-DataSet

int sumTotal = dt.AsEnumerable() 
    .Where(r => r.Field<int>("id") == id) 
    .Sum(r => r.Field<int>("col1") * r.Field<int>("col2")); 
+0

我想要實現這一點使用計算方法是有可能?? – social

+0

@social:也許這是可能的,但它不可讀,可維護,你永遠不會記得它是如何工作的或爲什麼它不工作。我不喜歡擺弄字符串和對象,而不是使用強類型方法。 LINQ比舊的表達式語法強得多。請注意,我已經爲該ID添加了過濾器。 –

1
double dTotal = 0.0; 
foreach (DataRow dr in dt.Rows) 
{ 
    double dValue1, dValue2; 

    if (!double.TryParse(dr["col1"].ToString(), out dValue1)) 
    { 
     //error parsing 
     break; 
    } 
    if (!double.TryParse(dr["col2"].ToString(), out dValue2)) 
    { 
     //error parsing 
     break; 
    } 
    dTotal += dValue1 * dValue2; 
}