【发布时间】:2011-08-13 20:03:33
【问题描述】:
我需要解决一个非常简单的过滤器问题,但我是使用 DataTables、DataRows 等的新手。我提出的解决方案闻起来很臭。我很确定这是实现它的更好方法。
这是一个简单的问题解释:
我有两个名为 branches 和 changesets 的数据表。名为 branches 的数据表包含系统中的所有条目,我需要过滤那些未在变更集条目中引用的分支。变更集引用了名为 FIDBRANCH 的字段中的分支。
例如。假设一个 dateTable 有 6 个分支和 3 个变更集。仅引用 id 为 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);
}
}
【问题讨论】:
标签: .net sql datatable dataset datarow