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