如何在不使用LINQ的情况下过滤数据表?我使用.NET 2.0 currenlty;因此,我无法使用LINQ。我有一个存储过程返回房间/费率对。我要筛选的数据表,因此将选择所有的汇率在一个特定的房间,所以基本上是这样的:不使用LINQ过滤DataTable?
SELECT Rates FROM TABLE1 WHERE Room = @Room.
我能做到这一点有一个DataTable还是只是为了更好地创建另一个存储过程,以避免使用内联sql?
如何在不使用LINQ的情况下过滤数据表?我使用.NET 2.0 currenlty;因此,我无法使用LINQ。我有一个存储过程返回房间/费率对。我要筛选的数据表,因此将选择所有的汇率在一个特定的房间,所以基本上是这样的:不使用LINQ过滤DataTable?
SELECT Rates FROM TABLE1 WHERE Room = @Room.
我能做到这一点有一个DataTable还是只是为了更好地创建另一个存储过程,以避免使用内联sql?
// if table is your DataTable
DataRow[] foundRows =table.Select("Room = " + roomName);
作为决定这样做,如果你想要做这种方式,或者如果它是更好地重写你的存储过程来接受一个爱得屋参数,这取决于: 如果有总行数并不是很多,如果您经常更改选定的房间,那么按照您的操作方式执行操作可能会更好(将整个DataTable保留在内存中,并将其过滤为适用于不同的房间)
当然,一个存储过程将是一条可行的路径,考虑到您也可以将参数设置为NULL
,因此您在null时忽略它或在提供值时使用它。
从.NET侧面也可以选择满足过滤条件,像这样一个数据表的数据行的一个子集:
DataRow[] rows = myTable.Select("Room = '1'");
但正如我所说,服务器端过滤较好,数据少在网络中移动....
您可以使用默认视图的筛选器属性,像这样:
dt.DefaultView.RowFilter = "SomeColumn > 0";
dt = dt.DefaultView.ToTable();
您也可以使用选择方法太:
dt = dt.Select("SomeColumn > 0").CopyToDataTable();