更快且更少俗气地匹配 2 个集合中的项目
您好,我需要迭代两个包含不同对象类型的集合并进行一些匹配,将匹配的项目添加到第三个列表中。
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不确定这是什么语言,但一定有一些像“存在”或“包含”这样的方法,您可以在其中连续执行两个循环。用伪代码
这样,您只需遍历每个集合一次,而不是在 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
That way you only go over each collection once rather than doing ListB N times where ListA has N items. Does this make sense?