Me pregunto si Linq tiene un método para verificar si dos colecciones tienen al menos un elemento en común. Esperaría algo como esto:Buscar cualquier elemento que exista en dos colecciones
var listA = new List<int>() { some numbers };
var listB = new List<int>() { some numbers, potentially also in list A };
bool hasSameElements = listA.hasMatchingElements(listB);
¿Existe en Linq o debería escribir un método personalizado para ello?
Conozco el método de Intersección, pero ¿esto no produce todo el conjunto de intersección? Solo me interesa comprobar si las dos colecciones se cruzan, lo que da como resultado que todo el conjunto sea un desperdicio, especialmente en colecciones más grandes.
'Intersecar' solo produce tantos elementos como se solicite. Si lo sigue con 'Any', o' FirstOrDefault', o hace un 'foreach' y rompe con la primera iteración, solo encontrará el _primero_ elemento que existe en ambas listas (si corresponde) - no le molestará encuentra el resto – Rawling
Sin embargo, tenga en cuenta que la operación 'Intersecar' requiere _una_ de las dos secuencias para _completamente_ leer antes de que el primer elemento pueda ser cedido. Si una de tus entradas es infinita, asegúrate de que no sea la entrada la que se consuma por completo. Tenga en cuenta que [la especificación] (http://msdn.microsoft.com/en-us/library/bb460136.aspx) para 'Intersect' _lies_ sobre cómo funciona. – Rawling