C# 如何求两列乘法之和
我有一个datatable,其中有两列名为col1和col2。我想得到每行的总和(col1*col2)。 我正在使用以下代码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
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;
}