相反

  • 反轉序列中元素的順序。
  • 如果沒有物品投擲 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];
}

實時程式碼示例

如果在迭代時改變列表,則此方法可能會遇到問題。