【问题标题】:datatable filter with two conditions具有两个条件的数据表过滤器
【发布时间】:2016-03-03 02:03:16
【问题描述】:

我正在处理一个大型数据表。我需要做一些过滤来计算某些行的总和值。对于以下代码,它过滤相同的 IDfile 并计算总和。我的问题是如果我想添加一个结合 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 和客户类型

【问题讨论】:

  • 任何输入样本和预期输出?
  • 一般情况下,我们在查询的时候过滤case,在它变成数据表之前,使用SQL语句。但如果这已成为DataTable,那么LINQ 查询可能会有所帮助。 SP_dt 是您的完整数据表,包含名称为:SP_ID, Load_ID, CUSTOMER_TYPE, Phase 等的列吗?而且您只想过滤其中的一些条目,不是吗?考虑使用Where 子句。
  • 另外,好像你有这么多列:SP_dt.Columns[j * 2 + 4] where j &lt; 8760?
  • 是的,一列。 SP_dt 是我的完整表格,包含所有信息
  • DataTable 有一个过滤器属性做谷歌搜索以获取更多信息

标签: c# filter datatable


【解决方案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 方法的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 2013-01-18
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    相关资源
    最近更新 更多