相反
- 反转序列中元素的顺序。
- 如果没有物品投掷
ArgumentNullException: source is null.
例:
// Create an array.
int[] array = { 1, 2, 3, 4 }; //Output:
// Call reverse extension method on the array. //4
var reverse = array.Reverse(); //3
// Write contents of array to screen. //2
foreach (int value in reverse) //1
Console.WriteLine(value);
请记住,根据 LINQ 语句的链顺序,Reverse()
可能会有所不同。
//Create List of chars
List<int> integerlist = new List<int>() { 1, 2, 3, 4, 5, 6 };
//Reversing the list then taking the two first elements
IEnumerable<int> reverseFirst = integerlist.Reverse<int>().Take(2);
//Taking 2 elements and then reversing only thos two
IEnumerable<int> reverseLast = integerlist.Take(2).Reverse();
//reverseFirst output: 6, 5
//reverseLast output: 2, 1
Reverse()
通过缓冲一切然后向后遍历它来工作,但是效率并不高,但从那个角度来看也不是 OrderBy。
在 LINQ-to-Objects 中,有缓冲操作(Reverse,OrderBy,GroupBy 等)和非缓冲操作(Where,Take,Skip 等)。
示例:非缓冲反向扩展
public static IEnumerable<T> Reverse<T>(this IList<T> list) {
for (int i = list.Count - 1; i >= 0; i--)
yield return list[i];
}
如果在迭代时改变列表,则此方法可能会遇到问题。