2次元配列の並び替えを行うサンプルです。 LINQのorderby句を使用して、下記2次元配列の並び替えを行います。

並び替えを行うメソッド
昇順、降順、複数列の並び替えを行うサンプルを作成しました。
①1列目で降順に並び替える
②1列目で降順に並び替える
③1列目、2列目を昇順、3列目を降順で並び替える
メソッド | 内容 |
---|---|
OrderBy | 昇順指定 |
OrderByDescending |
降順指定 |
ThenBy |
昇順指定(2列目以降はこちらを指定) |
ThenByDescending |
降順指定(2列目以降はこちらを指定) |
プログラミング
言語:C#
usingusing System; using System.Linq;①1列目で降順に並び替える
// 6行3列の2次元配列
int[,] iArray = new int[6, 3] {{ 2, 1, 1 },
{ 1, 1, 1 },
{ 2, 1, 3 },
{ 3, 1, 1 },
{ 2, 1, 2 },
{ 2, 1, 1 }};
// 配列の行数
int numRows = iArray.GetLength(0);
// 配列の列数
int numCols = iArray.GetLength(1);
// 1列目を昇順に並び替える
var sortedRows = Enumerable.Range(0, numRows)
.OrderBy(row => iArray[row, 0])
.Select(row => Enumerable.Range(0, numCols)
.Select(col => iArray[row, col])
.ToArray())
.ToArray();
// 結果出力
foreach (var row in sortedRows)
{
// 各行の要素をスペースで区切って出力
Console.WriteLine(string.Join(" ", row));
}
実行結果

// 6行3列の2次元配列
int[,] iArray = new int[6, 3] {{ 2, 1, 1 },
{ 1, 1, 1 },
{ 2, 1, 3 },
{ 3, 1, 1 },
{ 2, 1, 2 },
{ 2, 1, 1 }};
// 配列の行数
int numRows = iArray.GetLength(0);
// 配列の列数
int numCols = iArray.GetLength(1);
// 1列目で降順に並び替える
var sortedRows = Enumerable.Range(0, numRows)
.OrderByDescending(row => iArray[row, 0])
.Select(row => Enumerable.Range(0, numCols)
.Select(col => iArray[row, col])
.ToArray())
.ToArray();
// 結果出力
foreach (var row in sortedRows)
{
// 各行の要素をスペースで区切って出力
Console.WriteLine(string.Join(" ", row));
}
実行結果

// 6行3列の2次元配列
int[,] iArray = new int[6, 3] {{ 2, 1, 1 },
{ 1, 1, 1 },
{ 2, 1, 3 },
{ 3, 1, 1 },
{ 2, 1, 2 },
{ 2, 1, 1 }};
// 配列の行数
int numRows = iArray.GetLength(0);
// 配列の列数
int numCols = iArray.GetLength(1);
// 並び替える、
var sortedRows = Enumerable.Range(0, numRows)
.OrderBy(row => iArray[row, 0]) // 1列目を昇順に並び替える
.ThenBy(row => iArray[row, 1]) // 2列目を昇順に並び替える
.ThenByDescending(row => iArray[row, 2]) // 3列目を降順に並び替える
.Select(row => Enumerable.Range(0, numCols)
.Select(col => iArray[row, col])
.ToArray())
.ToArray();
// 結果出力
foreach (var row in sortedRows)
{
// 各行の要素をスペースで区切って出力
Console.WriteLine(string.Join(" ", row));
}
実行結果
