更快且更少俗气地匹配 2 个集合中的项目

发布于 2024-11-06 21:36:06 字数 656 浏览 4 评论 0原文

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

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 ) );
                }
            }
        }
    }

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

Hi I need to iterate two collections containing different object types and do some matching, adding matched items to a 3rd list.

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 ) );
                }
            }
        }
    }

Is there a better/more efficient way to do this? (I have simplified things a little, as I have some code in my code that copies to new local collections before iterating them, as I was having threading issues.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故人的歌 2024-11-13 21:36:06

不确定这是什么语言,但一定有一些像“存在”或“包含”这样的方法,您可以在其中连续执行两个循环。用伪代码

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

这样,您只需遍历每个集合一次,而不是在 ListA 有 N 个项目的情况下执行 ListB N 次。这有道理吗?

Not sure what language this is, but there must be some method liked "exists" or "contains" where you do two loops in series. In pseudo code

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

That way you only go over each collection once rather than doing ListB N times where ListA has N items. Does this make sense?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文