我有一个包含许多 DataTables 的 DataSet,每个 DataTables 包含许多列和一个 column buildingID
。我想通过给它一个 buildingID 的值来过滤整个数据集。我希望每个表中的行的 buildingID 为 343。
C# 中有什么快速可行的方法吗?
您可以使用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()));
那这个呢?
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.
}