在 List 中 有 sort 的功能
但如果裡面的資料不是 數字型態,要他們作 sort() 往往會作出不符合需求的排序
甚至作不出來(自定義的 class 要繼承
並不是每一個 class 都要發展成 完美或者一個很龐大的物件
這時 可以透過直接在 sort 中寫入簡短的程式碼 來省略這個步驟
首先 讓我們來建立一個 Class
public Class cObj
public mNum as integer
public mNmae as string
public mDate as new DateTimr
end Class
再來 讓我們自行建立一個以這個 class 為 T 的 List
Dim newList as new list(of cObj)
再來 請自行 產生 數個 加入 newList 中
Dim new1 as new cObj
new1.mNum = 99
new1.mName = "new1"
new1.mDate = now
Dim new2 as new cObj
new1.mNum = 10
new1.mName = "new2"
new1.mDate = now
newList.add(new1)
newList.add(new2)
....... (省略....請自行建立數個資料 然後加入 newList)
再來 讓我們對 mNum 作排序
newList.sort( Function(item1 As cObj, item2 As cObj) item1.mNum.CompareTo(item2.mNum))
我們使用 mNum 這個基本資料型態(Integer) 中定義好的 CompareTo() 來作資料排序
如此 就可以順利對自定義的 List 作想要的排序
'================================================================================================
但如果裡面的資料不是 數字型態,要他們作 sort() 往往會作出不符合需求的排序
甚至作不出來(自定義的 class 要繼承
IComparable
但這是一件很麻煩的事)並不是每一個 class 都要發展成 完美或者一個很龐大的物件
這時 可以透過直接在 sort 中寫入簡短的程式碼 來省略這個步驟
首先 讓我們來建立一個 Class
public Class cObj
public mNum as integer
public mNmae as string
public mDate as new DateTimr
end Class
再來 讓我們自行建立一個以這個 class 為 T 的 List
Dim newList as new list(of cObj)
再來 請自行 產生 數個 加入 newList 中
Dim new1 as new cObj
new1.mNum = 99
new1.mName = "new1"
new1.mDate = now
Dim new2 as new cObj
new1.mNum = 10
new1.mName = "new2"
new1.mDate = now
newList.add(new1)
newList.add(new2)
....... (省略....請自行建立數個資料 然後加入 newList)
再來 讓我們對 mNum 作排序
newList.sort( Function(item1 As cObj, item2 As cObj) item1.mNum.CompareTo(item2.mNum))
我們使用 mNum 這個基本資料型態(Integer) 中定義好的 CompareTo() 來作資料排序
如此 就可以順利對自定義的 List 作想要的排序
'================================================================================================
更進一步 可避免資料為 nothing 的方法
http://msdn.microsoft.com/en-us/library/w56d4y5z.aspx
http://msdn.microsoft.com/en-us/library/w56d4y5z.aspx
更多的範例
http://www.developerfusion.com/code/5513/sorting-and-searching-using-c-lists/
全站熱搜