Datatable的查找和排序(Datatable.Select)


 Datatable  是一種常用的數據結構。數據類型有點類似於數據庫中的表結構。在沒有使用優秀的orm框架前,大部分的數據庫的數據都是先變為Datatable 然后再通過代碼轉換變成 object。

鑒於Datatable在數據結構中的地位,ms 提供了豐富的屬性和方法來操作Datatable(以前曾經專門打印過Datatable的文檔,相關內容確實非常的多),此處專門記錄下Datatable 如何進行排序和查找的。

ms提供了 Datatable.Select 的四種重載,基本解決了這個問題(.Net 3.5之后的 linq 也很優雅的解決了這個問題)

 

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)——獲取與排序順序中的篩選器以及指定的狀態相匹配的所有 System.Data.DataRow 對象的數組。

 

說明:

(1)Datatable.Select() ;   會獲取到一個DataRow 的數組

(2)Datatable.Select(string ); string內容是一個表達式,相當於sql 中where 后邊的語句,但是有些表達式無法使用,比如between

(3)Datatable.Select(string , string );第一個string 為表達式,用法同(2),第二個表示式是用來表示排序字符的 類似於 order by 后邊的內容  如:

DataRow[] mDrs = dtGeographyAccount.Select(
                    string.Format("IsStockDay = 1 AND GeographyName like '%{0}%'", region),
                    "Date Asc");

(4)Select(string , string , DataViewRowState );    前兩個string 不解釋,第三個是枚舉類型,因為Datatable中的行都是有狀態的,此處可以對不同的狀態進行篩選

 

另外 Datatable中對於列明是不敏感大小寫的,如果需要區分大小寫,需要將DataTable的caseSensitive屬性設為true。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM