使用许多DataTable过滤整个DataSet

时间:2013-04-30 15:52:54

标签: c# asp.net

我有一个包含许多DataTable的DataSet,每个DataTable包含许多列和一列buildingID。 我想通过为buildingID提供一个值来过滤整个DataSet。我希望每个表中的行的buildingID为343。

C#中有没有快捷的方式?

2 个答案:

答案 0 :(得分: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()));

答案 1 :(得分: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.
}