假设我有一个整数列表。
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()时,我收到了错误。
感谢您的帮助
答案 0 :(得分:16)
var reversed = myList.Reverse()
应该可以解决问题。
编辑:
更正 - 正如OP发现的那样,List.Reverse就地工作,与Enumerable.Reverse不同。因此,答案只是myList.Reverse();
- 您不会将其分配给新变量。
答案 1 :(得分:6)
是否有任何功能允许我以相反的顺序显示它们,即
这取决于你是想要在适当的位置反转它们,还是仅仅产生一系列与基础序列相反的值而不改变列表。
如果是前者,只需使用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;
。
答案 2 :(得分:-1)
要反向执行列表<Location>
中的foreach循环,您应该使用:
foreach (Location item in myList.Reverse().ToList())
{
// do something ...
}
.Reverse()是就地反转;它没有返回新的列表。 .Reverse()之后的.ToList()可以解决问题。