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

わんくま同盟

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

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

■85990 / 1階層)  複数の配列をソートする方法
□投稿者/ 魔界の仮面弁士 (1497回)-(2017/12/07(Thu) 14:00:38)
No85978 (こんなのお さん) に返信
> For i = 1 To 1000
i = 0 のデータは、ソート対象外なのですね?

> Dim DateMod(1000) As Date
> Dim filepath(1000) As String
他の方も書かれているように、個別の変数にするのではなく、
クラスにまとめるべきかと思います。
(クラスの配列から、個々の要素の一次元配列を作るのは簡単ですし)


あえて元の配列を活かすのであれば、こんな書き方もあります。
※最初のコードにあわせ、DateMod(0) と filepath(0) はソート対象外としています。

Dim sortedIndex() As Integer = (
 From o In DateMod.Select(Function(d, i) New With {d, i}).Skip(1)
 Order By o.d, o.i Select o.i).ToArray()


これにより、ソートされたインデックス番号が sortedIndex に入るので、
 For Each idx As Integer In sortedIndexByDate
  Console.Write("{0}: #{1}#, ""{2}""", idx, DateMod(idx), filepath(idx))
 Next
などのようにして取り出すことが出来ます。


さらに上記を使って、インデックス番号順に並び替えた配列として
受け取りたいなら、このように書けます。

Dim SortedDateMod() As Date = New Integer() {0}.Concat(sortedIndex).Select(Function(i) DateMod(i)).ToArray()
Dim Sortedfilepath() As String = New Integer() {0}.Concat(sortedIndex).Select(Function(i) filepath(i)).ToArray()
編集キー/

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

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

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