2011-08-29 91 views
1

如何在不使用LINQ的情况下过滤数据表?我使用.NET 2.0 currenlty;因此,我无法使用LINQ。我有一个存储过程返回房间/费率对。我要筛选的数据表,因此将选择所有的汇率在一个特定的房间,所以基本上是这样的:不使用LINQ过滤DataTable?

SELECT Rates FROM TABLE1 WHERE Room = @Room. 

我能做到这一点有一个DataTable还是只是为了更好地创建另一个存储过程,以避免使用内联sql?

回答

2

你可以用DataTable's Select method

// if table is your DataTable 
DataRow[] foundRows =table.Select("Room = " + roomName); 

作为决定这样做,如果你想要做这种方式,或者如果它是更好地重写你的存储过程来接受一个爱得屋参数,这取决于: 如果有总行数并不是很多,如果您经常更改选定的房间,那么按照您的操作方式执行操作可能会更好(将整个DataTable保留在内存中,并将其过滤为适用于不同的房间)

2

当然,一个存储过程将是一条可行的路径,考虑到您也可以将参数设置为NULL,因此您在null时忽略它或在提供值时使用它。

从.NET侧面也可以选择满足过滤条件,像这样一个数据表的数据行的一个子集:

DataRow[] rows = myTable.Select("Room = '1'"); 

但正如我所说,服务器端过滤较好,数据少在网络中移动....

3

您可以使用默认视图的筛选器属性,像这样:

dt.DefaultView.RowFilter = "SomeColumn > 0";  
dt = dt.DefaultView.ToTable(); 

您也可以使用选择方法太:

dt = dt.Select("SomeColumn > 0").CopyToDataTable();