2

我有一个包含许多 DataTables 的 DataSet,每个 DataTables 包含许多列和一个 column buildingID。我想通过给它一个 buildingID 的值来过滤整个数据集。我希望每个表中的行的 buildingID 为 343。

C# 中有什么快速可行的方法吗?

4

2 回答 2

3

您可以使用DataTable.Select,它从符合条件的 DataTable 返回过滤后的行。

foreach (DataTable table in dataset.Tables) {
    var rows = table.Select("buildingID = " + buildingId.ToString());
    // Do stuff with filtered rows
}

为了轻松获取符合您的条件的所有行,这里有一个 LINQ 表达式:

var rows = dataset.Tables.SelectMany(
    t => t.Select("buildingID = " + buildingId.ToString()));
于 2013-04-30T15:57:35.127 回答
0

那这个呢?

var ds1 = new DataSet();
foreach (DataTable dt in ds1.Tables)
{
    var filtereddt = dt.AsEnumerable().Where(row => row.Field<int>("buildingID") == 1).ToList();

    //you can add these lists to another list array or something like that.
}
于 2013-04-30T15:58:19.220 回答