###前提・実現したいこと
プログラム初心者です。
1次元配列をKeyにHashtableを格納した1次元配列をValueにしたhashtable
を作成したいです。
###発生している問題・エラーメッセージ
作成したhashTableのbを配列のcに追加したいのですが、
前回のレコードの情報が残っててしまいエラーが出てしまうので
解決方法が知りたいです。
他に実現しやすい方法があればご教授いただければ幸いです。
イタリックテキスト
雑な質問で申し訳ありませんがよろしくお願いします。
エラーメッセージ
エラーメッセージ:System.ArgumentException: '項目は既に追加されています。
###該当のソースコード
Function aaa 'DBからレコードを取得しdtに格納 dtはdatatable型 dt = 関数getDBData '1次元配列 のちのHashTableのKey Dim a As New ArrayList 'Hashtable作成用変数 Dim b As New Hashtable() 'Hashtable格納用1次元配列 Dim c As New ArrayList '戻り値格納用 Dim d As New Hashtable '取得したレコード数分回します For x As Integer = 0 To dt.Rows.Count - 1 '1次元配列を作成 a.Add(dt.Rows(x)) 'DBから取得したレコードのカラム数分回します For y As Integer = 0 To dt.Columns.Count - 1 'Key=Columns、Value=レコードの内容のhashtableを作成 b.Add(dt.Columns.Item(y).ColumnName, dt.Rows(0).ItemArray(y)) Next 'Hashtableを配列に格納 c.Add(b) Next d.Add(a, c) Return d End Function
###試したこと
他の方法を調べましたがうまいこと見つけられませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
開発環境 VisualStudio2017 vb.net
コードは ``` と ``` で囲ってください。インデントされて見やすくなりますので。
> 他に実現しやすい方法があればご教授いただければ幸いです。← 全体的なやりたいことのシナリオ・ストーリーを書いていただけると、それに沿った代案が出てくるかもしれません。DB からデータを取得して HashTable を作るというのは個人的にはピンときません。(その HashTable をどのように使うかにもよりますが) Linq to Entity を使うとか、ADO.NET の DataTable に Fill するとかの手段は考えられたのでしょうか?
SurferOnWwwさん回答ありがとうございます。 初めての投稿でマナーが至りませんでした、参考にします。内容をご拝見しました。今回のプログラムはDBから取得したレコードのカラムと内容を使いまわそうと考えていたのでこの考えにいたりましたが、確かに不足な面が多いと思います。アドバイスを読みましたが具体的で分かりやすかったです。本当にコメントありがとうございます。
今からでも遅くはないので、コードは ``` と ``` で囲ってください。ベストアンサーをつけたらこのスレッドは終わりという訳ではないです。Teratail は know-how の蓄積も目的にしているそうです。なので、後から検索などでここにたどり着いた人のことも考えてください。
SurferOnWwwさんご指摘ありがとうございます。コードを```で囲い修正しました。 これから良心的な質問をするように心がけます。
回答1件
あなたの回答
tips
プレビュー