Vb.net VB:如何比较两个对象的属性值是否相同?

Vb.net VB:如何比较两个对象的属性值是否相同?,vb.net,for-loop,foreach,compare,equals,Vb.net,For Loop,Foreach,Compare,Equals,我有一个名为统计信息的对象。在该对象内部还有6个对象。每个都包含具有值的属性 例如,Statistics(0)包含“年龄”字段、“性别”字段、“车辆”等。。。 统计数据(1),统计数据(2)等也是如此 我想做的是将统计数据(0)一直与统计数据(6)进行比较,找出其中任何一个是否与另一个相同 如果Statistics(0)中包含的所有字段的值与Statistics(1)中的字段的值相同,我想做点什么 如何将这些对象相互比较 我尝试过的 For Each Stat As ExportStatisti

我有一个名为统计信息的对象。在该对象内部还有6个对象。每个都包含具有值的属性

例如,
Statistics(0)
包含“年龄”字段、“性别”字段、“车辆”等。。。 统计数据(1),
统计数据(2)
等也是如此

我想做的是将
统计数据(0)
一直与
统计数据(6)
进行比较,找出其中任何一个是否与另一个相同

如果
Statistics(0)
中包含的所有字段的值与
Statistics(1)
中的字段的值相同,我想做点什么

如何将这些对象相互比较

我尝试过的

For Each Stat As ExportStatistics In Statistics
    Insert_VehicleStats(Stat) 'Insert values into main Vehicle table 

    If Statistics.Length > 1 Then
    Dim i = 0
    Dim y = 0
    Dim previousObject As ExportStatistics

    For Each Stat2 In Statistics

        If Stat2.Equals(previousObject) Then
            Dim sadXml = "do something"
        End If

       previousObject = Stat2

    Next
End if

您可以重写类中的Equals函数,也可以重载它,然后创建自己的比较代码。以下是一个示例(假设您的对象类型为VehicleStatisticsItem):


您正在比较的两个对象将不相等,即使它们的属性相等。您需要指定您正在比较它们的属性

改变

If vehicleStatistic.Equals(previousObject) Then
        Dim sadXml = "do something"
End If


这样,您就可以比较它们的属性。

是否要求有精确的对齐方式,即
left。车辆统计(0)
将与
right.Vehiclestatics(0)
(而不是,例如,
right.Vehicles atistics(2)
)匹配?如果这样做,您还可能希望实现
IEquatable(Of T)
If vehicleStatistic.Equals(previousObject) Then
        Dim sadXml = "do something"
End If
If vehicleStatistic.GetType().GetProperties.Equals(previousObject.GetType().GetProperties) Then
        Dim sadXml = "do something"
End If