如何在不使用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();