如何比较两个数组的项目

时间:2015-01-26 09:09:06

标签: arrays vb.net

我创建了一个系统,可以保存在从网站获取的值数组中,这些值会实时更新。现在我正在实现一个能够看到更改值的附加模式。首先是除了下载类似“vecchia_lista”之外的值,然后我会确保比较数组的每个元素,看看旧数据是否与new不同。

Dim lista As New List(Of Country_Data)
Dim vecchia_lista As New List(Of Country_Data)
Private Structure Country_Data
    Dim casa As String
    Dim ospite As String
    Dim Result As String
End Structure

在更新值的功能中,我有一个像这样内容的嵌套循环:

Dim squadra As Country_Data
                    With squadra
                        .casa = Remove_Tags(Team_A(Team).Groups(1).Value)
                        .ospite = Remove_Tags(Team_B(Team).Groups(1).Value)
                        .Result = StrScore
                    End With
                    lista.Add(squadra)

变量团队A,b,StrScore 包含拆分元素 在此循环之前,我使用新内容更新旧数组:

vecchia_lista = lista

我的问题:

现在我想检查数组中某个元素是否发生了变化,老实说我不知道​​如何比较每一个实例。我创建了迭代列表中的每个元素,我请求你的帮助。

For Each element In lista

                    Next

1 个答案:

答案 0 :(得分:0)

实际上,很难理解你的问题,但似乎你正在寻找在两个不同的集合中找到具有相同密钥的元素,这些集合在特定属性中有所不同,其中密钥为{Casa, Ospite}而另一个财产Result

我建议使用Join将集合A中的元素与集合B中的对应元素进行匹配,并检查其Result属性的值是否不相等。

示例:

Public Class Country_Data
    Public Property Casa As String
    Public Property Ospite As String
    Public Property Result As String
End Class

Sub Main
    Dim vecchia_lista = New List(Of Country_Data) From _
        { New Country_Data() With {.Casa = "Team A", .Ospite = "Team B", .Result = "0:0"},
          New Country_Data() With {.Casa = "Team C", .Ospite = "Team D", .Result = "0:0"}}

    Dim lista = New List(Of Country_Data) From _
        { New Country_Data() With {.Casa = "Team A", .Ospite = "Team B", .Result = "0:0"},
          New Country_Data() With {.Casa = "Team C", .Ospite = "Team D", .Result = "1:0"}}

    Dim changed_elements = From d1 In vecchia_lista
                           Join d2 in lista On d1.Casa Equals d2.Casa And 
                                               d1.Ospite Equals d2.Ospite
                           Where d1.Result <> d2.Result
                           Select New With {.Casa = d1.Casa, .Ospite = d1.Ospite,
                                            .OldResult = d1.Result, .NewResult = d2.Result}
End Sub

changed_elements现在包含:

enter image description here