Ответ 1
Конечно, есть.
A.Intersect(B).Any();
Intersect
всегда полезен в наименее ожидаемых обстоятельствах.
Каков наилучший способ (в среднем) сравнить два списка с LINQ (синтаксис запроса или иначе)
var A = new [] { 1, 2, 3, ... };
var B = new [] { 4, 1, 5, ... };
bool match =
// Some LINQ expression
такое, что match
будет истинным, если хотя бы один элемент в первом списке (1 в этом случае) равен элементу из второго? Мне не нужно знать, сколько совпадений было или даже было сопоставлено с тем, что было хотя бы одно совпадение.
Конечно, есть.
A.Intersect(B).Any();
Intersect
всегда полезен в наименее ожидаемых обстоятельствах.
Вы можете использовать Intersect
, но это будет вычислять все совпадения, которые вам не нужны. Так что Any
лучше, так как он будет короткозамкнутым:
bool match = A.Any(a => B.Any(b => b == a));
вы также можете использовать
A.Any(x => B.Contains(x))
Вы ищете комбинацию Intersect
и Any
bool match = A.Intersect(B).Any();