2011-08-29 89 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();