2013-04-30 77 views
2

我有一个包含多个数据表的数据集,每个数据表包含许多列加上一列buildingID。 我想通过为buildingID提供一个值来过滤整个DataSet。我希望中的行每表的建筑ID为343.用许多数据表过滤整个数据集

在C#中有没有任何快捷方式?

+0

过滤器吗?.... – 2013-04-30 15:55:01

+0

LINQ可能是最好的途径,但@NikhilAgrawal跟进,我们需要更多地了解过滤。我的直觉是说你想通过建立ID过滤表格,这组数据表示一个建筑物。我会使用linq查询该集合,然后将该集合转换为表示数据表格的对象。 – cgatian 2013-04-30 15:57:46

+0

这可能会有所帮助:http://msdn.microsoft.com/en-us/library/bb669073.aspx – gwin003 2013-04-30 15:58:13

回答

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())); 
+0

我需要一次访问所有已过滤的表。 – Diane2 2013-04-30 17:41:42

+0

@ Diane2:LINQ查询返回所有表中的所有过滤行。 – voithos 2013-04-30 18:33:58

+0

啊。我要去尝试一下。谢谢。 – Diane2 2013-04-30 19:55:44

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. 
}