C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■85984 / 1階層)  複数の配列をソートする方法
□投稿者/ shu (1073回)-(2017/12/06(Wed) 21:39:25)
No85978 (こんなのお さん) に返信

なちゃさんの言うようにデータをクラス化してひとまとめにして扱うのがよいと思いますが
提示された内容をいかしておこなうなら以下のような方法もあります。

a,bがデータです。他にあっても全然かまいません。
sortidxsがbをソートとした結果の配列のインデックスの配列となります。(実際にはbはソートされません)
sortidxsに設定されている順番にa,bから該当する要素を取り出せばそれはbをソートした順番に取り出せることになります。
sortidxsを求めるときのOrder Byの部分を変更すればaでのソートをすることもその他の配列でソートすることもできます。

        Dim a = {5, 2, 1, 6, 21, 4}
        Dim b = {#2017/10/1#, #2017/10/2#, #2017/10/10#, #2017/10/5#, #2017/10/8#, #2017/10/3#}

        Dim sortidxs = (From idx In Enumerable.Range(0, a.Length)
                        Order By b(idx)).ToArray

        For idx = 0 To sortidxs.Length - 1
            Dim idx2 = sortidxs(idx)
            Console.WriteLine($"{a(idx2)} {b(idx2)}")
        Next

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←複数の配列をソートする方法 /こんなのお →Re[2]: 複数の配列をソートする方法 /こんなのお
 
上記関連ツリー

複数の配列をソートする方法 / こんなのお (17/12/06(Wed) 19:41) #85978
Re[1]: 複数の配列をソートする方法 / なちゃ (17/12/06(Wed) 21:11) #85983
複数の配列をソートする方法 / shu (17/12/06(Wed) 21:39) #85984 ←Now
│└ Re[2]: 複数の配列をソートする方法 / こんなのお (17/12/06(Wed) 21:51) #85985
│  └ Re[3]: 複数の配列をソートする方法 / はるまきとかげ (17/12/06(Wed) 23:35) #85986
Re[1]: 複数の配列をソートする方法 / 魔界の仮面弁士 (17/12/07(Thu) 14:00) #85990

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信