我正在尝试创建一个数组(或任何其他临时存储方法)来测试以查看某个记录是否已经存在;如果是的话我只想将记录添加到数组中 - 如果没有,我有一个在地图上创建节点的功能,那么我仍然想将记录添加到数组中。
我的概念是只为一个地图添加一个节点,每个单元只有一次 - 数据库只包含unitnumb,lat,long和time(这将是一个日期时间格式)我已经查询过数据库并拉了直到最后1000条记录。
目前我有
Dim mapcontains() As String = {""}
For pop As Integer = 0 To filltab.Rows.Count - 1
current = filltab.Rows(pop)("unitnumb")
If Array.FindIndex(mapcontains, Function(s) s.Contains(current)) = 0 Then
WebBrowser1.Document.InvokeScript("AddMarker", New Object() {"Unit: " & filltab.Rows(pop)("unitnumb") & " at " & filltab.Rows(pop)("time"), filltab.Rows(pop)("lat"), filltab.Rows(pop)("long")})
End If
mapcontains(pop) = current
Next
目前我尝试在完成if语句之后将每个项目添加到数组中,并比较数组以查看它是否先前存在于数据库中,如果不存在则仅运行addmarker脚本。
目前这不起作用,我该怎么做呢?
答案 0 :(得分:2)
使用Dictionary(如果您需要与密钥相关联的单独数据)或Hashset(如果您不需要),您会好得多。
例如:
Dim mapcontains As New System.Collections.Generic.HashSet(Of String)
For pop As Integer = 0 To filltab.Rows.Count - 1
current = filltab.Rows(pop)("unitnumb")
If Not mapcontains.Contains(current) Then
WebBrowser1.Document.InvokeScript("AddMarker", New Object() {"Unit: " & filltab.Rows(pop)("unitnumb") & " at " & filltab.Rows(pop)("time"), filltab.Rows(pop)("lat"), filltab.Rows(pop)("long")})
mapcontains.Add(current)
End If
Next