我写了一个代码来检查两个列表之间的交集。我只需要有交集。有没有更快的方法。
L,L2 are List<int>
bool working = true;
bool ok=false;
for (int k = 0; k<L.Count && working;k++) {
if (L2.Any (a => a == L[k])) {
ok=true;//There is an integer in L and L2
working=false;
}
}
不确定我是否忽略了什么,但通常使用intersect
+any
:
bool intersects = L.Intersect(L2).Any();
如果列表中的类型重写equals
和gethashcode
(就像大多数.NET类所做的那样),则此操作有效。如果您使用自己的,您应该记住这一点,否则只会比较引用。