【问题标题】:How to filter a DataTable programmatically如何以编程方式过滤 DataTable
【发布时间】:2011-08-13 20:03:33
【问题描述】:

我需要解决一个非常简单的过滤器问题,但我是使用 DataTables、DataRows 等的新手。我提出的解决方案闻起来很臭。我很确定这是实现它的更好方法。

这是一个简单的问题解释:

我有两个名为 brancheschangesets 的数据表。名为 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


    【解决方案1】:

    您希望在两个数据表之间创建一个 DataRelation。

    这可能对你有帮助...http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/f122d7f4-3b7d-4d93-bd0f-8bb57cd990a4

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 2018-12-04
      • 2011-12-15
      • 2018-01-23
      • 2014-04-12
      • 1970-01-01
      相关资源
      最近更新 更多