C# 如何求两列乘法之和

C# 如何求两列乘法之和,c#,datatable,C#,Datatable,我有一个datatable,其中有两列名为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

我有一个datatable,其中有两列名为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.

更具可读性的方法是使用
LINQ To DataSet

int sumTotal = dt.AsEnumerable()
    .Where(r => r.Field<int>("id") == id)
    .Sum(r => r.Field<int>("col1") * r.Field<int>("col2") );
int-sumTotal=dt.AsEnumerable()
其中(r=>r.Field(“id”)==id)
.Sum(r=>r.Field(“col1”)*r.Field(“col2”));

我想用compute方法实现这一点,这可能吗???@social:可能是可能的,但它不可读、不可维护,而且你永远不会记得它是如何工作的,为什么不工作。我不喜欢摆弄字符串和对象,而不是使用强类型方法。LINQ比旧的表达式语法更富诗意。注意,我已经为id添加了过滤器。
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;
}