Найдите два списка для хотя бы одного совпадения с LINQ

Каков наилучший способ (в среднем) сравнить два списка с LINQ (синтаксис запроса или иначе)

var A = new [] { 1, 2, 3, ... };
var B = new [] { 4, 1, 5, ... };

bool match = 
    // Some LINQ expression

такое, что match будет истинным, если хотя бы один элемент в первом списке (1 в этом случае) равен элементу из второго? Мне не нужно знать, сколько совпадений было или даже было сопоставлено с тем, что было хотя бы одно совпадение.

Ответы

Ответ 1

Конечно, есть.

A.Intersect(B).Any();

Intersect всегда полезен в наименее ожидаемых обстоятельствах.

Ответ 2

Вы можете использовать Intersect, но это будет вычислять все совпадения, которые вам не нужны. Так что Any лучше, так как он будет короткозамкнутым:

bool match = A.Any(a => B.Any(b => b == a));

Ответ 3

вы также можете использовать

A.Any(x => B.Contains(x))

Ответ 4

Вы ищете комбинацию Intersect и Any

bool match = A.Intersect(B).Any();