Определяет, равны ли две последовательности путем сравнения их элементов при помощи указанного IEqualityComparer (T).
Вы не можете непосредственно сравнить список & словарь, но Вы могли сравнить список значений из Словаря со списком
Замените использование Any на Contains в своем запросе. например:
searchTerms.Contains(c.Email)
Это должно дать желаемый результат. Он смотрит назад, но это правильно - он сгенерирует оператор IN для каждого поля внутри Contains со всеми элементами в searchTerms.
Часть AddressLine1 не будет работать таким образом - вам придется генерировать цикл сравните себя с
c.addressLine1.Contains(...)
Что-то вроде PredicateBuilder может быть полезным для этого.
Просто мысль (не имеющая прямого отношения к вопросу, но может помочь другим зрителям):
Я получал то же сообщение об ошибке, что и вы, хотя я правильно использовал метод Contains(), и мне потребовалось довольно много времени, чтобы понять, что корень моей проблемы заключался в возврате IEnumerable в функцию, которая должна была дополнительно фильтровать результаты запроса L2S. Как только я изменил возвращаемый тип функции на IQueryable, проблема исчезла. Это имеет смысл, поскольку IEnumerable не может быть подвергнут дальнейшей фильтрации, а IQueryable может.