簡體   English   中英

是否在不使用LINQ的情況下過濾DataTable?

[英]Filter DataTable without LINQ?

如何不使用LINQ過濾數據表? 我目前正在使用.NET 2.0; 因此,我無法使用LINQ。 我有一個存儲過程返回房間/房價對。 我想過濾數據表,以便它將選擇特定房間的所有費率,因此本質上是這樣的:

SELECT Rates FROM TABLE1 WHERE Room = @Room.

我可以使用DataTable這樣做嗎?還是最好創建另一個存儲過程以避免使用內聯sql?

您可以使用默認視圖的filter屬性,如下所示:

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

您也可以使用Select方法:

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

你可以用DataTable的Select方法做到這一點

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

至於確定是否要這樣做或是否最好重寫存儲過程以接受@room參數,則取決於:如果總行數不多,並且是否經常更改所選房間,則取決於按照您的方式執行操作可能會更好一些(在內存中保留一個DataTable並針對不同房間進行過濾)

當然可以使用存儲過程,請考慮將存儲中的參數也設置為NULL ,以便在null時將其忽略,或者在提供值時使用它。

從.NET端,您還可以選擇滿足過濾條件的DataTable的DataRows的子集,如下所示:

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

但是正如我所說,服務器端過濾更好,網絡中的數據傳輸更少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM