Collections 在多个离散集合中匹配特定项

Collections 在多个离散集合中匹配特定项,collections,vb6,matching,list-manipulation,Collections,Vb6,Matching,List Manipulation,我有一个问题,我有几个离散的ID列表,例如 列表(A)1,2,3,4,5,7,8 列表(B)2,3,4,5 列表(C)4,2,8,9,1 等等 然后我有另一个ID的集合… 例如:1,2,4 我需要尝试在每个列表中匹配一个。如果我可以完全匹配我的第二个集合中的所有ID(一个集合ID与每个列表中的ID匹配),那么我会得到一个真实的结果 我发现它变得很复杂,因为如果您只是在匹配您遇到的第一个集合/列表对的列表上进行迭代,可能会导致您排除可能的后续组合,从而返回假阴性结果 例如: 列表(A)1,2,3,

我有一个问题,我有几个离散的ID列表,例如

列表(A)1,2,3,4,5,7,8
列表(B)2,3,4,5
列表(C)4,2,8,9,1
等等

然后我有另一个ID的集合…
例如:1,2,4

我需要尝试在每个列表中匹配一个。如果我可以完全匹配我的第二个集合中的所有ID(一个集合ID与每个列表中的ID匹配),那么我会得到一个真实的结果

我发现它变得很复杂,因为如果您只是在匹配您遇到的第一个集合/列表对的列表上进行迭代,可能会导致您排除可能的后续组合,从而返回假阴性结果

例如:

列表(A)1,2,3,4
列表(B)1,2,3,4
清单(C)3,4

集合为:3,1,2

集合(3)中的第一个ID与列表A中的一个条目匹配,集合(1)中的第二个ID与列表B中的一个条目匹配,但是集合(2)中的最终ID与列表C中的任何条目都不匹配。但是,如果将集合的顺序重新排列为:2,1,3,则会找到匹配项。。。。因此,我正在寻找某种形式的逻辑,以便以有效的方式尝试匹配所有可能的组合(?)

更复杂的是,ID实际上是GUID,所以不能按升序排序

我希望我已经很好地描述了这一点,以清楚地说明我正在尝试什么,幸运的是,有人能够告诉我,我需要做的是非常简单的,我错过了一些真正简单的事情
我被迫在VB6中编写此代码,但任何方法或伪代码都将非常有用。它的后端是SQL server,因此如果有可能使用TSQL的解决方案,这将更好,因为所有ID都已保存在表中


非常感谢。

杰克,是的,列表和收藏都包含guid。我使用纯整数来简化这个问题

一旦一个列表被匹配,它就不能再被搜索,因此我试图解释排序问题。如果您说一个列表是“匹配”的,那么将不会执行进一步的匹配尝试。正是这种行为可能导致假阴性

在所有可能的订单组合中“发送”集合都会起作用,但这将是一项艰巨的工作

我觉得我一定错过了一个非常简单的概念或解决方案

感谢您迄今为止的帮助。

我看不到一种方法可以将列表中包含的每个GUID与集合中的每个GUID进行检查。您必须保留集合中每个GUID出现的列表的记录

以集合(3,1,2)为例,3出现在列表A,B和C中。 您将基本上只剩下这个数据集

  • 3(A、B、C)
  • 1(A,B)
  • 2(A,B)
一旦您将其提取到这个数据集,您就可以确定列表中是否有任何出现次数为零的guid,这将导致负面结果

我对算法一点也不精通,但这是我之后的工作方式: 从第一个集合(A、B、C)开始,检查它在数据集中进一步出现的次数。在这种情况下,找不到任何实例

转到下一个集合(A,B),如果发现该集合的出现次数大于该集合的长度,即出现两次以上,将导致出现负值。如果出现的次数与长度完全匹配(如此处的情况),则可以从任何进一步的考虑中删除集合(A,B)

  • 3(C)
  • 1()
  • 2()

我想你会继续重复这个过程,直到确定一个负数或者排除所有的事件。对于这类问题,可能有一种公认的算法,但我在这方面的知识有点欠缺(

那么,列表是否也包含GUID?一旦在列表中找到匹配项,该列表是否从进一步检查中删除?合并列表并在合并列表中搜索。