来自2个系列的物品更快,更少俗气

时间:2011-05-12 23:00:42

标签: collections matching

您好我需要迭代两个包含不同对象类型的集合并进行一些匹配,将匹配的项目添加到第三个列表。

private CheesyMatch( BindingList< MyTypeA > theListA, BindingList< MyTypeB > theListB )
    {
        foreach( MyTypeA item in theListA )
        {
            foreach( MyTypeB item2 in theListB )
            {
                if( item.name == item2.name )
                {
                    item.matched = true;
                    item2.matched = true;
                    MyMatchedList.items.add( new matchedItem( item, item2 ) );
                }
            }
        }
    }

有更好/更有效的方法吗? (我简化了一些事情,因为我在代码中有一些代码在迭代之前复制到新的本地集合,因为我遇到了线程问题。

1 个答案:

答案 0 :(得分:0)

不确定这是什么语言,但必须有一些方法喜欢“存在”或“包含”,你可以在其中进行两个循环。在伪代码中

foreach item in ListA
   if ListB.exists(item) then
      MatchedList.items.add(item)
   end if
endfor
foreach item in ListB
   if ListA.exists(item) then
      MatchedList.items.add(item)
   end if
endfor

这样你只需要遍历每个集合一次而不是ListB N次,其中ListA有N个项目。这有意义吗?