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

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

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

複数の配列をソート

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■94048 / inTopicNo.1)  複数の配列をソート
  
□投稿者/ ムッシュムラ村 (1回)-(2020/03/06(Fri) 18:38:31)
ムッシュムラ村 さんの Web サイト

分類:[VB.NET/VB2005 以降] 

2020/03/06(Fri) 18:47:28 編集(投稿者)
2020/03/06(Fri) 18:46:52 編集(投稿者)
2020/03/06(Fri) 18:46:14 編集(投稿者)
2020/03/06(Fri) 18:46:11 編集(投稿者)

以下の3つの配列があるとします

Dim TEST1(9) As String
Dim TEST2(9) As String
Dim TEST3(9) As String

URLの画像で
TEST1 → A
TEST2 → B
TEST3 → C

をそれぞれ画像下部の条件で、A# B# C#のように並べ替えることは可能でしょうか

引用返信 編集キー/
■94054 / inTopicNo.2)  Re[1]: 複数の配列をソート
□投稿者/ 魔界の仮面弁士 (2595回)-(2020/03/07(Sat) 02:21:41)
No94048 (ムッシュムラ村 さん) に返信
> 以下の3つの配列があるとします

「3 つの配列」で管理するよりも、
「1 つの DataTable」で管理した方が良い気がします。

あるいは、配列は 1 つだけにして、その配列のデータ型を String ではなく、
3 項目をもつクラスやタプルにしておくとか。


> それぞれ画像下部の条件で、A# B# C#のように並べ替えることは可能でしょうか

これでよいのかな。

Sub Main()
  Dim TEST1(9) As String
  Dim TEST2(9) As String
  Dim TEST3(9) As String

  TEST1 = New String(9) {"1", "2", "3", "2", "3", "1", "1", "2", "3", "2"}
  TEST2 = New String(9) {"商品2", "商品4", "商品2", "商品3", "商品1", "商品3", "商品1", "商品1", "商品3", "商品2"}
  TEST3 = New String(9) {"2020/3/7", "2020/3/9", "2020/3/6", "2020/3/8", "#######", "#######", "#######", "#######", "#######", "#######"}

  Dim src = Enumerable.Range(0, 10).Select(Function(i) New With {Key .A = TEST1(i), Key .B = TEST2(i), .C = TEST3(i)})
  Dim dst = From r In src Order By r.A Ascending, r.B Ascending

  Console.WriteLine("=== ソート前 ===")
  Array.ForEach(src.ToArray(), AddressOf Console.WriteLine)

  Console.WriteLine("=== ソート後 ===")
  Array.ForEach(dst.ToArray(), AddressOf Console.WriteLine)

  Console.ReadKey()
End Sub
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ