バッテラが如く

いつもお世話になっております。

【C#】System.Linqで配列を並び替え (ソート 降順 昇順)

この記事の情報は次のバージョンで動作確認しています。

  • .NET Standard 2.1
  • C#

    データを並び変える

    昇順 (OrderBy)

    var ordered = ary.OrderBy(x => x.param1); 
    
    foreach(var param in ordered) {
    }
    

    IOrderedEnumerable<T>が返ってきます。といっても配列と同じような感覚で使えます。

    x.param1は並び替えのキー(変数)です。

    降順(OrderByDescending)

    var ordered = ary.OrderByDescending(x => x.param1);
    

    条件を複数にしたい場合

    OrderByで比較した値が同じものがあった場合、条件を追加して並び替えたい場合があります。

    そいういう時は ThenBy / ThenByDescending を使います。

    昇順 (ThenBy)

    var ordered = ary.OrderBy(x => x.param1)
        .ThenBy(x => x.param2);
    

    降順 (ThenByDescending)

    降順にしたい場合は、 ThenByDescendingを使います。

    var ordered = ary.OrderBy(x => x.param1)
        .ThenByDescending(x => x.param2);
    

    さらに条件を追加したい場合

    ThenByを何回も繋げることで何個でも条件を追加することができます。

    var ordered = ary.OrderBy(x => x.param1)
        .ThenBy(x => x.param2);
        .ThenBy(x => x.param3);