我有一个数据表,其中有两列名为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.
答案 0 :(得分:5)
更易读的方法是使用LINQ-To-DataSet
:
int sumTotal = dt.AsEnumerable()
.Where(r => r.Field<int>("id") == id)
.Sum(r => r.Field<int>("col1") * r.Field<int>("col2") );
答案 1 :(得分: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;
}