質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1126閲覧

C# 異なる一次元配列を多次元配列にまとめる方法について

saku_kidz

総合スコア2

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/04/27 06:41

編集2021/04/27 12:36

前提・実現したいこと

異なる複数の一次元配列同士をまとめ、一つの多次元配列を作成する方法をご教示ください。

例:
string[] ID_Array = {"1", "2", "3"};
string[] NM_Array = {"David", "John", "Ian"};
string[] Age_Array = {"30", "25", "20"};

String[,,] Group_Array = {{"1", "David", "30"}, {"2", "John", "25"}, {"3", "Ian", "20"}};

上記のようなイメージです。
最終的にやりたいこととしまして、それぞれの一次元配列を一つの配列にまとめることで、
ID_Arrayを{"3", "2", "1"}と並び替えた際、
NM_ArrayもAge_Arrayもそれに呼応して、
{"Ian", "John", "Davis"}、{"20", "25", "30"}としたいのですが、
これを実現する方法はございますでしょうか。よろしくお願いします。

補足情報(FW/ツールのバージョンなど)

Visual Studio2019

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2021/04/27 06:46

string[][]ではだめですか?
saku_kidz

2021/04/27 07:22

私の説明が足りずすみません。 最終的にやりたいこととしまして、それぞれの一次元配列を一つの配列にまとめることで、 ID_Arrayを{"3", "2", "1"}と並び替えた際、 NM_ArrayもAge_Arrayもそれに呼応して、 {"Ian", "John", "Davis"}、{"20", "25", "30"}としたいのですが、 これを実現する方法はございますでしょうか。 よろしくお願いします。
退会済みユーザー

退会済みユーザー

2021/04/27 07:37 編集

回答欄に移動しました。
退会済みユーザー

退会済みユーザー

2021/04/27 07:31

質問者さん、上の 2021/04/27 16:22 のコメントを質問欄を編集して追記願います。ここは「質問への追記・修正、ベストアンサー選択の依頼」をする場所ですし、初期画面では閉じていて見ない人もいますから。
saku_kidz

2021/04/27 12:37

SurferOnWwwさん、ご指摘ありがとうございます。 修正いたしました。
guest

回答2

0

最終的にやりたいこととしまして、それぞれの一次元配列を一つの配列にまとめることで、
ID_Arrayを{"3", "2", "1"}と並び替えた際、
NM_ArrayもAge_Arrayもそれに呼応して、
{"Ian", "John", "Davis"}、{"20", "25", "30"}としたいのですが、
これを実現する方法はございますでしょうか。

どういう理由で配列を考えているのか分かりませんが、どうしても配列でなければならないという訳では無ければ List<T> 型にしてはいかがですか? 並べ替え等は Linq を使って可能です。

public class Group { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } List<Group> group = new List<Group> { new Group{ Id=1, Name="David", Age=30 }, new Group{ Id=2, Name="John", Age=25 }, new Group{ Id=3, Name="Ian", Age=20 } }

投稿2021/04/27 07:35

編集2021/04/27 07:36
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saku_kidz

2021/04/27 12:44

SurferOnWwwさん、返信が大変遅くなり申し訳ございません。 配列の方ばかりに頭が行ってしまい、List<T>型の件は思い浮かびませんでした…。 こちらの方も試してみます。 迅速なご回答、本当にありがとうございました。
退会済みユーザー

退会済みユーザー

2021/04/28 00:18

回答欄にも書きましたが「どうしても配列」という必要性がなく、特に今回の質問のようなデータを、しかも並べ替えたりする(他に、選択とかグループ分けとかもあるのでは?)ようなケースでは List<T> を使うのが最も適切な選択になると思います。 Linq による並べ替えなどの操作以外にも、Linq to Entities を使って DB からデータを取得するとか、JSON シリアライズ/デシリアライズとかにも関係してきますし。 前世紀の遺物的な配列とかを使っていてはそのうち行き詰ることがあるかもしれません。
saku_kidz

2021/04/28 16:20

SurferOnWwwさん、 はい、今後はList<T>を使う事を念頭におきたいと思います。 アドバイスをいただきましてありがとうございました。
guest

0

ベストアンサー

最終的にやりたいこととしまして、それぞれの一次元配列を一つの配列にまとめることで、

ID_Arrayを{"3", "2", "1"}と並び替えた際、
NM_ArrayもAge_Arrayもそれに呼応して、
{"Ian", "John", "Davis"}、{"20", "25", "30"}としたいのですが、
これを実現する方法はございますでしょうか。

以下、ID_Arrayを並べ替えたら他が追従するわけではありませんが、多分こういうことがやりたいと勝手に想像しました。

C#

1string[] ID_Array = {"1", "2", "3"}; 2string[] NM_Array = {"David", "John", "Ian"}; 3string[] Age_Array = {"30", "25", "20"}; 4 5 6var result = ID_Array 7 .Zip(NM_Array, (id, name) => new {id, name}) 8 .Zip(Age_Array, (x,age) => new{ID = x.id, Name = x.name, Age = age}); 9 10foreach(var r in result) 11 System.Console.WriteLine(r); 12 13System.Console.WriteLine("---"); 14 15foreach(var r in result.OrderByDescending (x => x.ID)) 16 System.Console.WriteLine(r);

text

1{ ID = 1, Name = David, Age = 30 } 2{ ID = 2, Name = John, Age = 25 } 3{ ID = 3, Name = Ian, Age = 20 } 4--- 5{ ID = 3, Name = Ian, Age = 20 } 6{ ID = 2, Name = John, Age = 25 } 7{ ID = 1, Name = David, Age = 30 }

投稿2021/04/27 07:26

編集2021/04/27 07:30
ozwk

総合スコア13532

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saku_kidz

2021/04/27 12:41

ozwkさん、返信が大変遅くなり申し訳ございません。 このような方法があるとは知らず、私の探し方が悪いせいもあってヒットしませんでした。 こちらで対応出来ました。 迅速なご回答、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問