2012-07-10 81 views
5

這一個應該很容易,我很害羞,我還沒有想出它自己呢。 我試圖扭轉我的wp7應用程序中的項目列表的順序。該列表是一個ObservableCollection。 使用system.linq時,intellisense讓我這樣做:myList.Reverse(); ,但這似乎並不奏效。我做錯了什麼,或者有其他方式可以輕鬆做到嗎?顛倒ObservableCollection <objectType>使用linq

在此先感謝。

+3

「似乎不工作」,怎麼樣?你的意思是用戶界面不顯示相反順序的項目? – user7116 2012-07-10 22:17:57

+0

相關的問題,但不一定是重複的http://stackoverflow.com/questions/10413535/reverse-order-of-observablecollection – user7116 2012-07-10 22:22:46

回答

23

Reverse返回一個IEnumerable,它不修改該集合。要修改你可以做

collection = new ObservableCollection<YourType>(collection.Reverse()); 
+2

這就是我尋找的解決方案。它的功能就像一個魅力。謝謝! – 2012-07-11 04:49:17

+0

這是如何工作的,當收集是一個ObservableCollection?那個班沒有反向...?至少,這是我嘗試這樣做時得到的信息。 – Erik 2015-04-25 08:55:30

+1

Reverse是System.Linq.Enumerable類中的擴展方法。爲System.Linq添加using語句; – 2015-04-26 01:56:13

0

創建一個繼承observablecollection(T)的類並在其中實現一個排序對象。這是這樣做的vb.net蠻力方式:

Public Sub Sort(ByVal comparer As IComparer(Of T)) 
    Dim j As Integer 
    Dim index As T 
    For i As Integer = 1 To Count - 1 
     index = Me(i) 
     j = i 
     While (j > 0) AndAlso (comparer.Compare(Me(j - 1), index) = 1) 
      Me(j) = Me(j - 1) 
      j = j - 1 
     End While 
     Me(j) = index 
    Next 
End Sub 
2

集合如果不想重新集合:

for (int i = 0; i < collection.Count; i++) 
    collection.Move(collection.Count - 1, i);