導入
「価格の安い順」「名前のあいうえお順」——コレクションを並べ替えるのがOrderByです。降順にしたり、同点のときの第2キーを指定したりもできます。
図解
flowchart LR
IN["[30, 10, 20]"] --> O["OrderBy(n => n)<br/>昇順"]
O --> OUT["[10, 20, 30]"]
IN --> OD["OrderByDescending<br/>降順"]
OD --> OUT2["[30, 20, 10]"]
サンプル
int[] nums = { 30, 10, 20 };
// OrderBy: 昇順(小さい順)
var asc = nums.OrderBy(n => n);
Console.WriteLine(string.Join(", ", asc)); // 10, 20, 30
// OrderByDescending: 降順(大きい順)
var desc = nums.OrderByDescending(n => n);
Console.WriteLine(string.Join(", ", desc)); // 30, 20, 10
// 文字列を長さ順、同じ長さなら辞書順(ThenBy)に
string[] words = { "bb", "a", "cc", "d" };
var sorted = words.OrderBy(w => w.Length).ThenBy(w => w);
Console.WriteLine(string.Join(", ", sorted)); // a, d, bb, cc
OrderBy(要素 => キー)で昇順、OrderByDescendingで降順ThenBy/ThenByDescendingで「同点のときの第2キー」を指定- 元のコレクションは変更されず、並べ替えた結果が返る
演習
int[] scores = { 72, 95, 60, 88 };
// TODO: 点数の高い順(降順)に並べ、string.Join でカンマ区切り出力してください
// (95, 88, 72, 60)
___
- 期待される出力:
95, 88, 72, 60
ヒント1を見る
OrderByDescending(s => s)
ヒント2を見る
Console.WriteLine(string.Join(", ", scores.OrderByDescending(s => s)));
まとめ
OrderByで昇順、OrderByDescendingで降順に並べ替えThenByで第2キー(同点時の順序)を指定- 元のコレクションは変わらず、並べ替え結果が返る
次回: 要素をグループにまとめるGroupByです。