IEnumerable.Contains()
dịch để SQL TRÊN như trong:
WHERE 'american airlines' IN ('airline', 'railroad') -- FALSE
String.Contains()
mà dịch để SQL NHƯ% ...% như trong:
WHERE 'american airlines' LIKE '%airline%' -- TRUE
Nếu bạn muốn địa chỉ liên lạc ở đâu ngành công nghiệp của liên hệ là LIKE (chứa) bất kỳ ngành nào đã cho, bạn muốn kết hợp cả Any() và String.Contains() vào một cái gì đó như thế này:
string[] industries = { "airline", "railroad" };
var query = from c in contacts
where industries.Any(i => c.Industry.Contains(i))
select c;
Tuy nhiên, kết hợp cả hai Any() và String.Contains() như thế này là KHÔNG hỗ trợ trong LINQ to SQL. Nếu các thiết lập của ngành công nghiệp nhất định là nhỏ, bạn có thể thử một cái gì đó như:
where c.Industry.Contains("airline") ||
c.Industry.Contains("railroad") || ...
Hoặc (mặc dù thường không khuyến khích) nếu tập các địa chỉ liên lạc là đủ nhỏ, bạn có thể mang lại cho họ tất cả từ DB và áp dụng bộ lọc với LINQ to Objects bằng cách sử dụng contacts.AsEnumerable() hoặc contacts.ToList() như là nguồn gốc của các truy vấn trên:
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