2013-07-25 41 views
1

我想顛倒可觀察集合中項目的順序。 這是我的示例代碼:C#:Linq反向收集失敗

 int[] collection1 = new int[] { 1, 2, 3, 4, 5 }; 
     ObservableCollection<int> obColl1 = new ObservableCollection<int>(); 
     foreach (var item in collection1) // initial order 1,2,3,4,5 
     { 
      obColl1.Add(item); 
      Console.WriteLine("Added {0} in ObservableCollection", item); 
     } 
     Console.WriteLine("Now reverse their order"); 

     obColl1.Reverse(); 
     foreach (var item in obColl1) // still show 1,2,3,4,5 instead of 5,4,3,2,1 
     { 
      Console.WriteLine("After reversing ObservableCollection: {0}", item); 
     } 

     Console.WriteLine("Press any key to exit"); 
     Console.ReadKey(); 

輸出結果仍然顯示順序相同的初始順序。我錯過了什麼嗎?有些錯誤?

預先感謝您

回答

2

您需要的返回值賦值給對象

喜歡的東西

int[] collection1 = new int[] { 1, 2, 3, 4, 5 }; 
ObservableCollection<int> obColl1 = new ObservableCollection<int>(); 
foreach (var item in collection1) // initial order 1,2,3,4,5 
{ 
    obColl1.Add(item); 
    Console.WriteLine("Added {0} in ObservableCollection", item); 
} 
Console.WriteLine("Now reverse their order"); 

var ret = obColl1.Reverse(); //try the changes here and the line below. 
foreach (var item in ret) // still show 1,2,3,4,5 instead of 5,4,3,2,1 
{ 
    Console.WriteLine("After reversing ObservableCollection: {0}", item); 
} 

Console.WriteLine("Press any key to exit"); 
Console.ReadKey(); 

Enumerable.Reverse Method你會看到它有一個返回類型,所以你需要將其分配給對象。

3

您需要將其重新分配:

obColl1 = new ObservableCollection<int>(obColl1.Reverse());