cfe*_*uke 15
用System.Linq你可以做...
// List<...> list;
foreach (var i in list.Reverse())
{
}
Run Code Online (Sandbox Code Playgroud)
对于随机顺序,您必须使用list.OrderBy(另一个Linq扩展)随机排序,然后迭代该有序列表.
var rnd = new Random();
var randomlyOrdered = list.OrderBy(i => rnd.Next());
foreach (var i in randomlyOrdered)
{
}
Run Code Online (Sandbox Code Playgroud)
Jac*_*ter 15
正如其他答案所提到的,Reverse()扩展方法将允许您以相反的顺序枚举序列.
这是一个随机枚举扩展方法:
public static IEnumerable<T> OrderRandomly<T>(this IEnumerable<T> sequence)
{
Random random = new Random();
List<T> copy = sequence.ToList();
while (copy.Count > 0)
{
int index = random.Next(copy.Count);
yield return copy[index];
copy.RemoveAt(index);
}
}
Run Code Online (Sandbox Code Playgroud)
您的用法是:
foreach (int n in Enumerable.Range(1, 10).OrderRandomly())
Console.WriteLine(n);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6571 次 |
| 最近记录: |