2016-03-03 69 views
0

我正在處理一個大的數據表。我需要做一些過濾器來計算某些行的總和值。對於下面的代碼,它過濾相同的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和客戶類型

+0

任何輸入樣本和預期輸出? – Ian

+0

正常情況下,我們在使用SQL語句進行查詢時,在它變成數據表之前過濾該案例。但是,如果它已經成爲'DataTable',那麼'LINQ'查詢可能會有所幫助。 「SP_dt」是完整的數據表,包含名稱爲「SP_ID,Load_ID,CUSTOMER_TYPE,Phase」等的列。你只想篩選其中的一些條目,不是嗎?考慮使用'Where'子句。 – Ian

+0

此外,似乎你有這麼多列:'SP_dt.Columns [j * 2 + 4]'哪裏'j <8760'? – Ian

回答

1

只需將第二個條件添加到過濾器即可。就像這樣:

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

Here對於計算方法的文檔。

+0

是的,它的工作原理。非常感謝! – Daniel