具有两个条件的数据表过滤器

时间:2016-03-03 02:03:17

标签: c# filter datatable

我正在使用大型数据表。我需要做一些过滤来计算某些行的总和值。对于以下代码,它会过滤相同的ID文件并计算总和。我的问题是,如果我想添加一个与IDfile结合的其他条件

for (int i = 0; i < LoadIDcount; i++)
{
    string IDnow = LoadID[i, 0];

    for (int j = 0; j < 8760; j++)
    {
        string colPnow = SP_dt.Columns[j * 2 + 4].ColumnName.ToString();
        double ColP_sum = (double)SP_dt.Compute(String.Format("Sum([{0}])", colPnow), String.Format("Load_ID = '{0}'", IDnow));
        string colQnow = SP_dt.Columns[j * 2 + 5].ColumnName.ToString();
        double ColQ_sum = (double)SP_dt.Compute(String.Format("Sum([{0}])", colQnow), String.Format("Load_ID = '{0}'", IDnow));


        LoadP_dt.Rows[i][j + 2] = ColP_sum;
        LoadQ_dt.Rows[i][j + 2] = ColQ_sum;
        Console.WriteLine("{0}    {1}", i, j);
    }

}

数据表就像:

SP_ID   Load_ID              CUSTOMER_TYPE  Phase   1/1/2015 0:00   
1234567 11111111111          DOM            ABC     3.8928  
2345678 2222222222           DOM            ABC     1.9608  
3456788 33333333             IND            ABC     3.742   
23242   4444444444           IND            ABC     6.9856  
23890583    55555555555      IND            ABC     1.0628  

我想在计算中添加两个条件来过滤ID和客户类型

1 个答案:

答案 0 :(得分:1)

只需将第二个条件添加到过滤器即可。像这样:

double ColP_sum = (double)SP_dt.Compute(String.Format("Sum([{0}])", colPnow), String.Format("Load_ID = '{0}' AND Phase = '{1}'", IDnow, 'ABC'));

Here是Compute方法的文档。