我目前正在开发一个 .NET WinForms 应用程序,它读取 8 个相同格式的 csv 文件,并将每个 CSV 文件的数据存储在一个对象中,并带有修改/检索数据的方法。
CSV 文件的每一行都有关于策略的数据。
我正在使用的类/对象的结构是这样的:
Policy
此类/对象存储与单个策略相关的所有数据,即 CSV 文件的一行。这个类有一个名为的成员polData
,它是一个OrderedDictionary
. polData
将每个字段存储为字符串,字段标题作为键。
DataFile
此类/对象存储从 csv 文件读取的所有数据,即每个策略。这个类有一个名为的成员polCollection
,它是一个OrderedDictionary
. polCollection
使用策略 ID 作为键存储所有策略对象。
对于这两个类,我都使用了 an,OrderedDictionary
因为我需要保留将数据添加到字典中的顺序。
创建并填充这些对象后,我需要将其中一个输出到datagridview
. 因此,我想DataTable
使用字典中的数据创建一个。请在下面找到我的方法。我的直觉是有一种更有效的方法,所以我很感激任何反馈:
在DataFile
课堂上,我有以下方法:
Public Function toDataTable() As DataTable
Dim dt As New DataTable
Dim fieldHeader As String
Dim i As Integer
Dim pol As Policy
'//add columns to datatable
'//there are 68 columns.
'//the calcFieldHeader function returns the header string based on the header index
For i = 0 To 67
fieldHeader = tools.calcFieldHeader(i)
dt.Columns.Add(fieldHeader)
Next i
'//loop through each policy in polCollection
'//add policy rows to datatable
For Each key In polCollection.keys
pol = polCollection(key)
dt.Rows.Add(pol.toArray)
Next key
Return dt
End Function
在Policy
课堂上,我有以下方法:
Public Function toArray() As String()
Dim result(67) As String
Dim inx As Integer
inx = 0
For Each key In polData.keys
result(inx) = polData(key).ToString
inx = inx + 1
Next (key)
Return result
End Function