Check for any element that exists in two collections

c#, collections, linq

Solution

Sounds like you just want:

bool hasSameElements = listA.Intersect(listB).Any();

EDIT: As noted in comments, `Intersect` uses lazy evaluation. It defers all execution until the first element is read from the result; at that point it will load all of `listB` into a set, and then stream `listA` until it finds a result to yield. At that point, `Any()` will return `true` and so no more work will be done. See my Edulinq post on `Intersect` for more information.

Problem

I'm wondering if Linq has a method to check if two collections have at least a single element in common. I would expect something like this: ``` var listA = new List<int>() { some numbers }; var listB = new List<int>() { some numbers, potentially also in list A }; bool hasSameElements = listA.hasMatchingElements(listB); ``` Does it exists in Linq or should I write a custom method for it? I am aware of the Intersect method, but doesn't this yield the entire intersection set? I'm only interested in checking IF the two collection intersect, yielding the entire set seems like a waste, especially on larger collections.

Original source