我有两个数组,我试图在多个级别上进行比较。两者具有相同的结构,具有 3" 列。
第一列包含多边形的 ID,第二列包含区域类型,第三列包含多边形的每种区域类型的百分比。
因此,对于许多行,它会比较,例如,ID:1 类型:aaa %:100 但是对于某些元素,我有很多行具有相同的 ID。例如,我将有 ID 2,类型 aaa,25% --- ID 2,类型 bbb,25% --- ID 2,类型 ccc,50%。在第二个数组中,我将有 ID 2,类型 aaa,25% --- ID 2,类型 bbb,10% --- ID 2,类型 eee,38% --- ID 2,类型 fff,27 %。
这是一个视觉示例..
所以,我的函数必须比较这两个数组,如果有差异,给我发一封电子邮件。(我不会向你展示真正的代码,因为有 811 行)。第一个“如果”条件是
if array1.id = array2.id Then
if array1.type = array2.type Then
if array1.percent = array2.percent Then
zone_verification = True
Else
zone_verification = False
问题是因为每个数组中有超过 50 000 行。因此,当我运行该函数时,对于每个“array1.id”,该函数在 array2 中搜索 50 000 行。50 000 次搜索 50 000 行.. 运行时间相当长!
我正在寻找让它运行得更快的东西。我怎样才能让我的搜索更具体。示例:我在 array1 中有很多 id "2"。如果array2中有许多id“2”,找到它,并将所有array2.id = 3推入“子数组”或类似的东西,并在这些特定行中搜索。所以我将在array1中只有X行与array 2中的X行进行比较,而不是50 000。当array1中的每个“id 2”完成时,对“id 4”做同样的事情......和“编号 5"...
希望很清楚。这几乎是我第一次使用 VB.net,而且我有这么大的功能可以运行。
谢谢
编辑
这就是我想做的。
我在地理空间数据库中有两个不同的层。两层具有相同的结构。它们是地块 (55 000) 和土地利用层的“空间连接”。第一层是当前层,第二层是我们将在 2015 年之后使用的下一层。
所以我有,对于每个“地块”,每个土地使用的百分比。因此,对于“地块”(ID 7580-80-2532),我可以拥有 50% 的农业使用(TYPE FAR-23)和 50% 的住宅使用(RES-112)。在第一个数组中,我'将有 2 行具有相同 ID (7580-80-2532),但每行将具有不同的类型 (FAR-23, RES-112) 和不同的 %。在第二层中,相同的市政分区 (土地用途) 发生了变化。因此,相同的“地块”现在将占住宅用途 (RES-112) 的 40%、商业用途 (COM-54) 的 20% 和新农业用途 (FAR-33) 的 40%。所以,我想知道是否有一些差异。有些地块会完全一样。有些地块会保持相同的土地利用,但每个地块的百分比不一样。但是对于某些地块,土地利用会或多或少每种类型的百分比不同。
我希望此脚本比较这两个图层,并在同一地块 ID 的这两个图层之间存在差异时向我发送电子邮件。
该脚本已经在运行,但它需要太多时间。
问题是,我认为,脚本遍历数组 1 中每一行的所有数组 2。
我想要的是当array1中有超过1行具有相同的ID时,在两个数组中只取这个ID。
也许如果我按 ID 对它们进行排序,我可以写一个条件。有点像“当你找到你正在寻找的东西时,当你找到不同的价值时停止搜索?
很难解释清楚,因为我从上周开始就一直在使用 VB。而且英语不是我的第一语言!;)