IEnumerable.Contains()
przekłada się na SQL IN jak w:
WHERE 'american airlines' IN ('airline', 'railroad') -- FALSE
String.Contains()
co przekłada się na SQL LIKE% ...% jak w:
WHERE 'american airlines' LIKE '%airline%' -- TRUE
Jeśli chcesz styki gdzie przemysł kontaktu jest LIKE (zawiera) dowolną z branż, chcesz połączyć zarówno Any(), jak i String.Contains() w coś takiego:
string[] industries = { "airline", "railroad" };
var query = from c in contacts
where industries.Any(i => c.Industry.Contains(i))
select c;
Jednakże połączenie zarówno jakąkolwiek() i String.Contains(), jak to jest nie obsługiwane LINQ SQL. Jeśli zestaw danych branżach jest niewielki, można spróbować coś takiego:
where c.Industry.Contains("airline") ||
c.Industry.Contains("railroad") || ...
lub (chociaż zwykle nie zalecane), czy zestaw styków jest na tyle mała, można przynieść je wszystkie z DB i zastosować filtr z LINQ do Objects za pomocą contacts.AsEnumerable() lub kontaktów.ToList() jako źródła zapytania powyżej:
var query = from c in contacts.AsEnumerable()
where industries.Any(i => c.Industry.Contains(i))
select c;
LINQ do SQL, LINQ do elementów, LINQ do obiektów? – Lucas