2011-04-27 68 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); 
     } 
} 

提前感谢!

回答

相关问题