假设InsertOnSubmit
字典中的每个项目都很好,你可以For Each
像这样通过循环调用它
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(来自评论):
如果它是 aDataTable
我们仍然可以解析它(因为一个DataTable
意味着乘以相同的数据class
)。为了解决这个问题,我认为最好还是声明一个代表数据表中一行的类。但是在您的情况下,一行是 250 列。这是很多。除非我们知道每个数据的类型,否则无法正确放置行。但是由于数据列的数量很多,我可以进一步建议您执行以下两个替代选项之一:
第一种方法是将表拆分为多个数据关系为第三范式的表(请查找更多相关信息)。这样可以最大限度地减少数据的大小,并具有良好的数据关系结构。这种方式将使您最终得到几个较小的表,但这对于可持续性和可扩展性是值得的。人们考虑的第三范式的唯一成本通常是查询速度。但是 250 列的 100 条记录不会产生这个问题。
第二种方法是使用数据表的列信息来获取每个单独列的数据类型。虽然列数很多,但数据类型的数量更加有限。然后,您需要创建一种通用方法来将每种数据类型映射到 C# 中等效类型的生成数据。然后对于 250 列中的所有数据,您可以使用此泛型类的方法根据您的流程将其转换为 VB.Net 数据类型,反之亦然。此方法更有效且持久,但您可能会发现创建泛型有点麻烦班级。但是这样你就不需要改变你的桌子
为什么通常人们用第二种方式更结构化地解决这个问题是因为可重用性。给定具有 X 列和 Y 记录的新案例,以前的解决方案可用于新问题。但是,如果您更多地使用这组数据,那么采用第一种方式并不是一个糟糕的选择。或者,如果第一个和第二个都不适合您的情况,那么是的,您可能会费力地声明一个class
有 250 个成员的 a