我有一個List(Of MyObject)
,我需要進行排序。所以我確信實現IComparable
,IEquatable
,IEqualityComparer
和IComparer
和排序工作正常。超載List.Sort
有新的項目的新要求。排序列表不能包含「重複」對象。在這種情況下,重複與爲重排目的定義重複的方式略有不同。我創建了一個新的例程來檢查兩個對象並返回首選對象。首選的是除了一個以外所有值都相同的值,最後一個值是最大值。我已經使這個例程運行良好。
現在我很想通過創建繼承IList(Of MyObject)
一個對象,然後重寫Sort
方法首先刪除「重複」來解決這個「刪除重複項」的問題,然後使用IComparable
接口作爲List
排序通常會sort本身。不過,我不知道該怎麼做。從我目前閱讀的內容看,這似乎不是可能的。我知道我可以只是創造像SortWithRemove
或類似的東西一個單獨的程序解決這個問題,但我想知道如果壓倒一切是可能的。
編輯:基於下面的建議,我決定不重寫Sort
但使用的擴展方法。這裏是我的代碼:
Public Module Extensions
<System.Runtime.CompilerServices.Extension()> _
Public Sub SortRemovingDuplicates(list As List(Of UniCatalogEntry))
'filter out unwanted records
End Sub
End Module
試着做這樣的事情後表明:http://stackoverflow.com/questions/1606679/remove-duplicates-in-the-list-using-linq – Billy
@Billy我想,除了我不是處理真正重複的記錄。 (還是)感謝你的建議。 – cjbarth