2011-04-27 22 views
1

我需要解決一個非常非常簡單的過濾器問題,但我是新的使用DataTables,DataRows等。我提出的解決方案聞起來很多。我很確定這是一個更好的實現方法。如何以編程方式過濾數據表

下面是一個簡單的問題解釋說:

我有兩個DataTable稱爲分支變更。名爲分支的數據表具有系統中的所有條目,我需要過濾那些在變更集條目中未引用的分支。變更集引用名爲FIDBRANCH的字段中的分支。

例如。假設一個包含6個分支和3個變更集的dateTable。僅引用帶有4和5的分支。

BRANCHES 
1   
2   
3 
4 
5 
6 

CHANGESETS 
references to branch 4 
references to branch 5 
references to branch 5 

其結果將是樹枝數據集過濾僅具有分支4和5

這是我的不好的做法:

private void FilterUnusedBranches(DataTable branches, DataTable changesets) 
{ 
     // index referenced branch ids 
     ArrayList branchIds = new ArrayList(); 

     foreach (DataRow row in changesets.Rows) 
     { 
      long id = Convert.ToInt64(row["FIDBRANCH"]); 
      branchIds.Add(id); 
     } 

     IList<DataRow> notNeededRows = new List<DataRow>(); 

     // get a list of non-referenced rows 
     foreach (DataRow row in branches.Rows) 
     { 
      long id = Convert.ToInt64(row["BRID"]); 

      if (!branchIds.Contains(id)) 
      { 
       notNeededRows.Add(row); 
      } 
     } 

     // remove not needed rows 
     foreach (DataRow row in notNeededRows) 
     { 
      branches.Rows.Remove(row); 
     } 
} 

提前感謝!

回答

相關問題