個人的によく使用する独自クラス配列の並び替え処理

だいたいこの3つを使用。

例:顧客クラス。List.Sortが実行できるようにIComparableを継承し、CompareToメソッドを実装しています。

/// <summary>
/// 顧客クラス
/// </summary>
class Customer : IComparable
{
    public int CompareTo(object x)
    {
        var otherCS = (Customer)x;

        return this.Age.CompareTo(otherCS.Age);
    }

    /// <summary>
    /// 苗字
    /// </summary>
    public string LastName { get; set; }

    /// <summary>
    /// 名前
    /// </summary>
    public string FirstName { get; set; }

    /// <summary>
    /// 年齢
    /// </summary>
    public int Age { get; set; }
}

メイン。「Comparison デリゲート」および「LINQ」を使用する場合は上のIComparableの継承とCompareToメソッドの実装は不要です。

static void Main(string[] args)
{
    //顧客リストを作成
    var customers = new List<Customer>();
    customers.Add(new Customer() { LastName = "あおき", FirstName = "たろう", Age = 45 });
    customers.Add(new Customer() { LastName = "いとう", FirstName = "あいこ", Age = 32 });
    customers.Add(new Customer() { LastName = "きもと", FirstName = "ゆうじ", Age = 16 });
    customers.Add(new Customer() { LastName = "やまだ", FirstName = "しろう", Age = 14 });


    //IComparableインターフェイスの実装
    customers.Sort();
    Console.WriteLine("\n### 年齢順(IComparableインターフェイスの実装) ###");
    foreach (Customer cs in customers)
    {
        Console.WriteLine("{0} {1} ({2}歳)", cs.LastName, cs.FirstName, cs.Age);
    }

    //Comparison<T> デリゲート
    customers.Sort((Customer x, Customer y) => { return x.LastName.CompareTo(y.LastName); });
    Console.WriteLine("\n### 苗字順(omparison<T> デリゲート) ###");
    foreach (Customer cs in customers)
    {
        Console.WriteLine("{0} {1} ({2}歳)", cs.LastName, cs.FirstName, cs.Age);
    }

    //LINQ
    var query = from cs in customers
                orderby cs.FirstName
                select cs;
    Console.WriteLine("\n### 名前順(LINQ) ###");
    foreach (Customer cs in query.ToArray())
    {
        Console.WriteLine("{0} {1} ({2}歳)", cs.LastName, cs.FirstName, cs.Age);
    }
    
#if DEBUG
            Console.ReadLine();
#endif
}

実行結果

### 年齢順(IComparableインターフェイスの実装) ###
やまだ しろう (14歳)
きもと ゆうじ (16歳)
いとう あいこ (32歳)
あおき たろう (45歳)

### 苗字順(omparison<T> デリゲート) ###
あおき たろう (45歳)
いとう あいこ (32歳)
きもと ゆうじ (16歳)
やまだ しろう (14歳)

### 名前順(LINQ) ###
いとう あいこ (32歳)
やまだ しろう (14歳)
あおき たろう (45歳)
きもと ゆうじ (16歳)