ADO.NET 快速入門(十):過濾數據

咱們有不少方法來過濾數據。一種是在數據庫命令級別,利用 where 子句查詢過濾數據。另外一種是在數據填充到 DataSet 之後過濾數據。本篇討論後者。
 
一旦數據填充到 DataSet,你可使用 DataSet 的方法獲取一個數據子集。
 

一、使用 Select 方法過濾數據庫

設想一下 DataSet 填充了 Customers 和 Orders 兩個表。你可使用 Select  方法返回一組行,爲名叫 Kelly 的 Customers 過濾數據。數組

 
    myRowArray = dsCustomers.Select("ContactName like 'Kelly%'");

 

注意,這個語句和 ANSI-SQL 相似。從本質上講,他們是 ANSI-SQL 的子集,下列區別:由於 DataSet 能夠保存多張關聯表,因此過濾器也能夠過濾這些關聯表。下例中,使用 Child 關鍵字過濾 Orders 和 Customers。asp.net

 
    myRowArray = dsCustomers.Select("ContactName like 'Kelly%' AND [child].OrderDate = '7/26/68'");

 

Select 函數返回行數組,你能夠經過 foreach 語句迭代這個數組。函數

 

二、使用 DataViews 過濾和排序ui

 
使用 DataView 對象,你能夠在 DataSet 上設置多個過濾器,創建對他們的綁定,等等。DataView 可使用 Select 中一樣的查詢語法規則過濾數據。可是過濾器是動態的。若是添加一行數據,而且知足過濾要求,那麼對 View 可見。Views 能夠排序和過濾。過濾器包括 Data 過濾器和 Version 過濾器(Current、New、Modified、Deleted)。能夠經過 DataSet 內部的 DataTable 建立一個DataView 對象。
 
 
    DataView myDataView = new DataView(myDataSet.Tables["Customers"]);

 

你可使用上例中 Select 方法一樣的查詢過濾語法,在 RowFilter 屬性上設置一個過濾器。設置排序,使用逗號分隔的排序列,其次是 ASC(默認和可選)或者 DESC 用於升序和降序。spa

 
            // 基於 CustomerID 列排序
            myDataView.Sort = "CustomerID";

            // 篩選 CustomerID 爲 ALFKI 的行
            myDataView.RowFilter = "CustomerID = 'ALFKI'";

 

你也能夠基於行的狀態進行過濾(Deleted,New,等等)。下例演示了過濾 Deleted 狀態行。
 
    myDataView.RowStateFilter = DataViewRowState.Deleted;
 
原文連接:
相關文章
相關標籤/搜索