簡體   English   中英

如何反轉顯示列表內容的順序?

[英]How to reverse the order of displaying content of a list?

假設我有一個整數列表。

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()時 ,我得到了錯誤。

謝謝你的幫助

var reversed = myList.Reverse()應該可以解決問題。

編輯:

更正 - 正如OP發現的那樣,List.Reverse就地工作,與Enumerable.Reverse不同。 因此,答案就是myList.Reverse(); - 您不將其分配給新變量。

是否有任何功能允許我以相反的順序顯示它們,即

這取決於您是否要在適當的位置反轉它們,或僅僅生成與基礎序列相反的值序列而不更改列表。

如果是前者,只需使用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;

要反向執行List <Location>的foreach循環,您應該使用:

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

.Reverse()是就地反轉; 它不會返回新列表。 .Reverse()之后的.ToList()可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM