我认为这需要O(A x B)
时间来执行。如何获得不同类型集合之间的匹配?
(其中A是collectionA和B的大小是collectionB的大小)
对吗?
IEnumerable<A> GetMatches(IEnumerable<A> collectionA, IEnumerable<B> collectionB)
{
foreach (A a in collectionA)
foreach (B b in collectionB)
if (a.Value == b.Value)
yield return a;
}
是否有更快的方式来执行此查询? (可能使用LINQ?)
我建议你倒车时用,即消耗'collectionB'急切地工作,其中集合,然后流'collectionA' - 只是因为在更好地满足与LINQ到Objects的其他部分所做的一样。 –
@Jon:好点 - 也注意到了我在那里的一个bug(为了这个工作,HashSet需要是对值的散列,而不是对象本身......)那更多的是你在想什么? –
该解决方案的复杂性如何? – asmo