2011-09-24 57 views
3

比方說,我有一個整數列表。如何顛倒顯示列表內容的順序?

var myList = new List<int>(); 
1, 2, 3, 4, 5, ..., 10 

有沒有可以讓我以相反的順序顯示它們的任何功能,即

10, 9, 8, ..., 1 

編輯


public List<Location> SetHierarchyOfLocation(Location location) 
    { 
     var list = new List<Location>(7); 
     var juridiction = location.Juridiction; 
     if (juridiction > 0) 
     { 
      while (juridiction > 0) 
      { 
       var loc = repository.GetLocationByID(juridiction); 
       list.Add(loc); 
       juridiction = loc.Juridiction; 
      } 
     } 
     return list; 
    } 

由於列表中包含位置按位置,我想以便能夠以相反的順序顯示它。

現在,當我寫回報list.Reversed(),我得到的錯誤。

感謝您的幫助

回答

16

var reversed = myList.Reverse()應該做的伎倆。

編輯:

修正 - 作爲OP發現,List.Reverse工作在原地的,不像Enumerable.Reverse。因此,答案僅僅是myList.Reverse(); - 您不會將其分配給新變量。

+1

我得到一個錯誤:「...不能將void分配給隱式類型的局部變量...」 – Richard77

+0

我的歉意,我忘記了有一個List.Reverse-我的例子假定IEnumerable。這實際上很讓人困惑 - Enumerable.Reverse(擴展方法)返回顛倒的枚舉。 List.Reverse在原地反轉元素,這就是你所看到的。 –

+0

爲什麼downvote? –

6

Is there any function that allows me to display them in reverse order, i.e.

這取決於您是否想要將它們顛倒過來,或者只是產生與底層序列相反的值序列而不更改列表。

如果是前者,只需使用List<T>.Reverse即可。

// myList is List<int> 
myList.Reverse(); 
Console.WriteLine(String.Join(", ", myList)); 

如果是後者,關鍵是Enumerable.Reverse

// myList is List<int> 

Console.WriteLine(
    String.Join(
     ", ", 
     myList.AsEnumerable().Reverse() 
    ) 
); 

一個美麗的一行。確保你有using System.Linq;

+0

我收到一個錯誤:「......不能將void分配給隱式類型局部變量......」 – Richard77

+0

我不認爲你是因爲我沒有分配給任何隱式類型局部變量。請再試一次。請注意,我提供了兩種方法。一個使用'List .Reverse',另一個使用'Enumerable.Reverse'。 – jason

+0

您也可以使用'myList.AsEnumerable()。Reverse()'語法。 –

-1

做一個foreach循環在列表<Location>相反,你應該使用:

foreach (Location item in myList.Reverse().ToList()) 
{ 
    // do something ... 
} 

的.Reverse()是就地逆轉;它不會返回一個新的列表。 .Reverse()之後的.ToList()可以做到這一點。

+1

'ToList'甚至不會編譯,特別是因爲它是一個反向的。它返回'void'。 – Servy