LINQ К исключению SQL: Локальная последовательность не может привыкнуть в LINQ к реализации SQL операторов запроса кроме оператора Contains

Enumerable.SequenceEqual

Определяет, равны ли две последовательности путем сравнения их элементов при помощи указанного IEqualityComparer (T).

Вы не можете непосредственно сравнить список & словарь, но Вы могли сравнить список значений из Словаря со списком

23
задан p.campbell 10 November 2009 в 23:58
поделиться

2 ответа

Замените использование Any на Contains в своем запросе. например:

searchTerms.Contains(c.Email)

Это должно дать желаемый результат. Он смотрит назад, но это правильно - он сгенерирует оператор IN для каждого поля внутри Contains со всеми элементами в searchTerms.

Часть AddressLine1 не будет работать таким образом - вам придется генерировать цикл сравните себя с

c.addressLine1.Contains(...)

Что-то вроде PredicateBuilder может быть полезным для этого.

33
ответ дан 29 November 2019 в 01:51
поделиться

Просто мысль (не имеющая прямого отношения к вопросу, но может помочь другим зрителям):

Я получал то же сообщение об ошибке, что и вы, хотя я правильно использовал метод Contains(), и мне потребовалось довольно много времени, чтобы понять, что корень моей проблемы заключался в возврате IEnumerable в функцию, которая должна была дополнительно фильтровать результаты запроса L2S. Как только я изменил возвращаемый тип функции на IQueryable, проблема исчезла. Это имеет смысл, поскольку IEnumerable не может быть подвергнут дальнейшей фильтрации, а IQueryable может.

11
ответ дан 29 November 2019 в 01:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: