我在想Linq是否有一种方法可以检查两个集合是否至少有一个共同元素。我期望的代码如下:
var listA = new List<int>() { some numbers };
var listB = new List<int>() { some numbers, potentially also in list A };
bool hasSameElements = listA.hasMatchingElements(listB);
在 Linq 中是否存在此功能,还是我应该编写自定义方法?
我知道 Intersect 方法,但这难道不会生成整个交集集合吗?我只想检查两个集合是否有交集,生成整个集合似乎是一种浪费,特别是对于更大的集合。
Intersect
只返回被要求的元素数。如果您使用Any
、FirstOrDefault
或在第一次迭代时中断foreach
,它只会找到两个列表中存在的_第一个_元素(如果有的话)- 它不会去查找剩下的。 - RawlingIntersect
操作要求在第一个元素被生成之前完全读取两个序列中的 一个 序列。如果您的输入之一是无限的,请确保它不是被完全消耗的输入。请注意,Intersect
的 规范说明 在描述它的工作方式时是有误导性的。 - Rawling