2014-04-09 29 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; 
}