いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Linq入門記-26 (LINQ To Object, Reverse)


今回は、Reverse拡張メソッドについてです。


Reverse拡張メソッドは、その文字とおりソースシーケンスを逆順に変換するだけの動きをします。


書式は以下の通りです。

public static IEnumerable<TSource> Reverse<TSource>(
    this IEnumerable<TSource> source
)


以下、サンプルです。

    #region LinqSamples-24
    public class LinqSamples24 : IExecutable
    {
        class Person
        {
            public int    Id   { get; set; }
            public string Name { get; set; }
                
            public override string ToString()
            {
                return string.Format("[ID={0}, NAME={1}]", Id, Name);
            }
        }
        
        public void Execute()
        {
            IEnumerable<int>    numbers = new int[] { 1, 2, 3, 4, 5 };
            IEnumerable<Person> persons = new List<Person>
                                                  {
                                                      new Person{ Id = 1001, Name = "gsf_zero1" },
                                                      new Person{ Id = 1000, Name = "gsf_zero2" },
                                                      new Person{ Id = 111,  Name = "gsf_zero3" },
                                                      new Person{ Id = 9889, Name = "gsf_zero4" },
                                                      new Person{ Id = 9889, Name = "gsf_zero5" },
                                                      new Person{ Id = 100,  Name = "gsf_zero6" }
                                                  };
                          
            //
            // Reverse拡張メソッドは、文字通りソースシーケンスを逆順に変換するメソッドである。
            // このメソッドは、そのままソースシーケンスを逆順に変換するだけである。
            //
            // 尚、本メソッドは、他のLINQ演算子と同様に遅延実行される。
            //
            var reverseNumbers = numbers.Reverse();
            var reversePersons = persons.Reverse();
            
            Console.WriteLine(string.Join(",", reverseNumbers.Select(element => element.ToString())));
            Console.WriteLine(string.Join(",", reversePersons.Select(element => element.ToString())));
        }
    }
    #endregion

出力結果は以下のようになります。

  5,4,3,2,1
  [ID=100, NAME=gsf_zero6],[ID=9889, NAME=gsf_zero5],[ID=9889, NAME=gsf_zero4],[ID=111, NAME=gsf_zero3],[ID=1000, NAME=gsf_zero2],[ID=1001, NAME=gsf_zero1]

================================
過去の記事については、以下のページからご参照下さい。