Fun Coding

学んだことを記録していきます!

【C#】リストの要素を昇順にソートする方法 まとめ

リストの要素を昇順にソートするメソッドは2つあります。

方法
メソッド名
Sort
OrderBy
共通の仕様

なし

異なる仕様
方法
メソッド名
戻り値
計算方法
比較方法
Sort なし 先行評価:即座に計算が行われる 比較メソッド
OrderBy あり 遅延評価:値が必要になった時に計算が行われる キー

コード
using System;
using System.Collections.Generic;
using System.Linq;

namespace Sample {
    /// <summary>
    /// メインプログラム
    /// </summary>
    public class Program {
        /// <summary>
        /// 方法の比較
        /// </summary>
        static void Main() {
            // リストを生成
            var list = new List<int>();

            // リストに値を追加
            list.Add(10);
            list.Add(1);
            list.Add(0);
            list.Add(3);
            list.Add(7);
            list.Add(5);

            var list1 = new List<int>(list);
            var list2 = new List<int>(list);
            var list3 = new List<int>(list);

            // Sortの場合
            list1.Sort();
            list2.Sort((a, b) => a - b);
            Console.WriteLine("Sort 比較メソッドなし : " + string.Join(", ", list1));
            Console.WriteLine("Sort 比較メソッドあり : " + string.Join(", ", list2));

            // OrderByの場合
            IOrderedEnumerable<int> result = list3.OrderBy(n => n);
            Console.WriteLine("OrderBy : " + string.Join(", ", result));
        }
    }
}
出力
Sort 比較メソッドなし : 0, 1, 3, 5, 7, 10
Sort 比較メソッドあり : 0, 1, 3, 5, 7, 10
OrderBy : 0, 1, 3, 5, 7, 10