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);
}
}
提前感謝!