IEnumerable.Contains()
traduce a SQL EN como en:
WHERE 'american airlines' IN ('airline', 'railroad') -- FALSE
String.Contains()
que se traduce en SQL COMO% ...% como en:
WHERE 'american airlines' LIKE '%airline%' -- TRUE
Si desea que los contactos donde la industria del contacto es LIKE (contiene) cualquiera de las industrias dadas, quiere combinar Any() y String.Contains() en algo como esto:
string[] industries = { "airline", "railroad" };
var query = from c in contacts
where industries.Any(i => c.Industry.Contains(i))
select c;
Sin embargo, la combinación de ambas Cualquier() y String.Contains() como este es NO apoyado en LINQ a SQL. Si el conjunto de determinadas industrias es pequeño, puede intentar algo como:
where c.Industry.Contains("airline") ||
c.Industry.Contains("railroad") || ...
O (aunque normalmente no se recomienda) si el conjunto de contactos es lo suficientemente pequeño, se puede llevar a todos de la base de datos y aplicar el filtro con LINQ to Objects mediante el uso de contacts.AsEnumerable() o contactos.ToList() como la fuente de la consulta anterior:
var query = from c in contacts.AsEnumerable()
where industries.Any(i => c.Industry.Contains(i))
select c;
LINQ to SQL, LINQ to Entities, LINQ to Objects? – Lucas