【C#】配列要素を複数のキー、順序で並べ替える

テーブルの行データのような多次元配列に対して、複数のキー、順序で並べ替える方法。

OrderByとThenBy

複数のキーで並べ替える場合、OrderByThenByを使う方法がある。

DataTable sample

ID | Name   | Age
01 | TANAKA | 30
02 | TANAKA | 54
03 | AIBA   | 32
04 | WADA   | 21

上記のDataTableを、Name昇順、Age降順で処理したい場合、以下の通り。

DataRow[] rows = sample.Select();
var sortedRows = rows.OrderBy(x => x.Name).ThenByDescending(x => x.Age);

foreach (DataRow row in sortedRows)
{
  Console.WriteLine(row[0].ToString());
}

// 出力結果
03
02
01
04

解説

昇順の場合、OrderByThenByを使う。

降順の場合、OrderByDescendingThenByDescendingを使う。

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のPG・SEを経て、独立。 現在はとある企業のCTOと、変な名前の会社の社長をしてる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください