我有两个数据表(dt1 和 dt2),我想将它们转换为类的对象(data1 和 data2),因此我可以使用 compareTo 方法将其放入绑定列表中。
Public Class MainForm
Public dt1, dt2 As DataTable
Public data1, data2 As ISAACService
Private Sub btnDatei1_Click(sender As Object, e As EventArgs) Handles btnDatei1.Click
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
If File.Exists(OpenFileDialog1.FileName) Then
dt1 = FileGenerator.ReadFromProtectedFile(OpenFileDialog1.FileName)
dgv1.DataSource = dt1
End If
End If
End Sub
Private Sub btnVergleich_Click(sender As Object, e As EventArgs) Handles btnVergleich.Click
CompareDataTables()
End Sub
Private Sub btnDatei2_Click(sender As Object, e As EventArgs) Handles btnDatei2.Click
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
dt2 = FileGenerator.ReadFromProtectedFile(OpenFileDialog1.FileName)
dgv2.DataSource = dt2
End If
End Sub
Private Sub CompareDataTables()
data1 = CType(dt1, ISAACService)
For i = 0 To dt1.Rows.Count - 1
If i < dt2.Rows.Count Then
Dim row1 = dt1.Rows(i)
Dim row2 = dt2.Rows(i)
data1.CompareTo(data2)
'
End If
Next
End Sub
End Class
compareTo 方法:
Public Function CompareTo(other As ISAACService) As Integer Implements IComparable(Of ISAACService).CompareTo
If other.GetType() Is GetType(ISAACService) Then
other = CType(other, ISAACService)
If Me.UANR > other.UANR Then
Return 1
ElseIf Me.UANR < other.UANR Then
Return -1
Else
Return 0
End If
End If
Return 0
End Function
对象的类:
Public MustInherit Class ISAACServiceBase
ReadOnly Property KostenArt As String
ReadOnly Property UANR As String
ReadOnly Property Überbegriff As String
ReadOnly Property Benennung As String
ReadOnly Property Anzahl As Double
ReadOnly Property Einheit As String
ReadOnly Property Einzelkosten As Double
ReadOnly Property Gesamtmenge As Integer
ReadOnly Property Z As String
Public Sub New()
End Sub
Public Sub New(kArt As String, uNR As String, üBegriff As String, bnung As String, anzl As Double, enht As String, eKosten As Double, gMenge As Integer, zz As String)
KostenArt = kArt
UANR = uNR
Überbegriff = üBegriff
Benennung = bnung
Anzahl = anzl
Einheit = enht
Einzelkosten = eKosten
Gesamtmenge = gMenge
Z = zz
End Sub
End Class
如果您需要任何进一步的信息,请告诉我。感谢您的帮助!
这是一个进行转换的函数。当然,我不知道这些DataTable
字段是否与类的属性对齐。您可能需要更改row
.
Private Function CovertDataTableToListOfISAACService(dt As DataTable) As List(Of ISAACService)
Dim lst As New List(Of ISAACService)
For Each row As DataRow In dt.Rows
Dim ISAAC As New ISAACService(row(0).ToString, row(1).ToString, row(2).ToString, row(3).ToString, CDbl(row(4)), row(5).ToString, CDbl(row(6)), CInt(row(7)), row(8).ToString)
lst.Add(ISAAC)
Next
Return lst
End Function
您的比较函数开始验证other
. other 已经保证是ISAACService
因为这是参数的类型。我不确定你在比较什么,但这不是问题所问的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句