【C#】Linqで配列を降順や昇順でソート(並び替え)する方法

データを並び変える

昇順 (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);