標籤:
有時候我們需要對資料表進行篩選,微軟為我們封裝了一個公用方法, DataTable.Select(),其用法如下:
Select()
Select(string filterExpression)
Select(string filterExpression, string sort)
Select(string filterExpression,string sort, DataViewRowState record States)
1) Select()——擷取所有 System.Data.DataRow 對象的數組;
2) Select(string filterExpression)——按照主鍵順序(如果沒有主鍵,則按照添加順序)擷取與篩選條件相匹配的所有 System.Data.DataRow 對象的數組;
3) Select(string filterExpression, string sort)——擷取按照指定的排序次序且與篩選條件相匹配的所有System.Data.DataRow 對象的數組;
4) Select(string filterExpression, string sort, DataViewRowState recordStates)——擷取與排序次序中的篩選器以及指定的狀態相匹配的所有。
舉例說明:
有一個使用者表,名稱為 dtUsers,有id、姓名name、性別sex、年齡age
1.篩選所有的使用者
DataRow[] drs1 =dtUsers.Select();
2.篩選所有性別為男的使用者
DataRow[] drs2 =dtUsers.Select("sex = ‘男‘ ");
3.篩選所有性別為男且年齡在18歲以上的使用者
DataRow[] drs3 =dtUsers.Select("sex = ‘男‘ and age >= 18");
4.篩選所有性別為男或者年齡在18歲以上的使用者
DataRow[] drs4 =dtUsers.Select("sex = ‘男‘ or age >= 18");
5.篩選所有姓“夏”的使用者
DataRow[] drs5 =dtUsers.Select("name like ‘夏%‘");
6.篩選所有18歲以上的使用者且按從大到小的順序排序
DataRow[] drs5 =dtUsers.Select("age >=18","age desc");
7.上面最後一種用法沒試過,有機會再列舉出來。
注意事項:上面的Select操作是不區分大小寫(表欄位不敏感,如pl-sql文法),如果需要區分大小寫,需要將DataTable的caseSensitive屬性設為true,例如上表的
dtUsers.CaseSensitive = true;//區分大小寫
C# DataTable.Select() 篩選資料