InsertOnSubmit
が辞書のすべての項目でうまく機能すると仮定すると、次のFor Each
ように Loopで呼び出すことができます
For Each item As MyNewClass In dct.Values
db.Orders.InsertonSubmit(item)
Next
より難しい部分は、それを定義MyNewClass
して辞書に入れ、後で簡単に処理できるようにすることです
Dim dctValues As New Dictionary(Of String, MyNewClass) 'Note the Value is MyNewClass
編集:
. _ List
_ MyNewClass
_ OrderID
_ ShipCity
_OrderDate
Public Class MyNewClass
Public OrderID As Integer
Public ShipCity As String
Public OrderDate As Date
End Class
Key
ただし、アイテムを追加するときに を配置する必要はありません。
Dim list As List(Of MyNewClass) 'List declaration, later will have 250 items
次に、持っているオブジェクトごとに、まずそれらをList
byfor loop
に入れ、次にそれをデータベースに入れます
For Each item As MyNewClass In list
db.Orders.InsertonSubmit(item) 'no need to submit per item, but using For Each loop
Next
編集2(コメントから):
それが であるDataTable
場合でも、それを解析できます (DataTable
同じ のデータを乗算することを意味するためclass
)。それを解決するには、データ テーブルの行を表すクラスを宣言するのが最善だと思います。ただし、この場合の 1 行は 250 列です。これはたくさんあります。また、各データの型がわからない限り、行を正しく配置する方法はありません。ただし、データ列の数が非常に多いため、次の 2 つの代替オプションのいずれかを実行することをお勧めします。
最初の方法は、データ関係が第 3 正規形である複数のテーブルにテーブルを分割することです (詳細については、こちらを参照してください)。このようにして、データのサイズを最小限に抑え、データ関係の構造を適切にします。この方法では、いくつかの小さなテーブルができてしまいますが、持続可能性と拡張性のために行う価値があります。人々が考慮する第 3 正規形の唯一のコストは、通常、クエリの速度です。ただし、250 列の 100 レコードでは、この問題は発生しません。
2 番目の方法は、データ テーブルの列情報を使用して、個々の列のデータ型を取得することです。列の数は豊富ですが、データ型の数はより制限されています。次に、C# で各データ型を同等の型の生成データにマップする汎用的な方法を作成する必要があります。次に、250 列のすべてのデータに対して、このジェネリック クラスのメソッドを使用して、プロセスに従って VB.Net データ型に変換します。この方法はより効率的で永続的ですが、ジェネリックを作成するのに少し問題があるかもしれません。クラス。ただし、この方法ではテーブルを変更する必要はありません
通常、人々がこの問題をより構造的に2 番目の方法で解決するのは、再利用性のためです。X列とYレコードの新しいケースが与えられた場合、以前のソリューションを新しい問題に使用できます。しかし、この 1 セットのデータでさらに多くのことを試す場合、最初の方法を選択することは悪い選択ではありません。あるいは、最初の方法も 2 番目の方法もあなたの状況に合わない場合は、class
250 メンバーでa を宣言するのに苦労するかもしれません