Метод "Boolean Contains (System.String)" не поддерживает перевод на SQL

"Метод" Boolean Contains (System.String) "не поддерживает перевод на SQL."

запрос IsQueryable, но это перестало работать:

foreach (string s in collection1)
{
       if (s.Length > 0)
                {
                    query = query.Where(m => m.collection2.Contains(s));

                }
}

UPDATE: он работает, когда я делаю запрос "ienumerable" вместо iqueryable. Каким образом можно получить тот же результат с помощью linq вместо повторения цикла?

Ответ 1

Попробуйте следующее:

query = query.Where(m => m.collection2.ToList().Contains(s));
                                       ^^^^^^^^

Ответ 2

Посмотрите на этот ответ из stackoverflow.

Похоже, что в результате запроса потребуется доступ к тому, что база данных не имеет возможности достичь, потому что информация находится в памяти.

Ответ 3

Так как m.collection2 находится в базе данных, не используйте Contains. Использовать любой

m.collection2.Any(x => x == s)

Ответ 4

Похоже, что ошибка, которую вы видите, исходит из коллекции коллекции. 2. Вы пытались обернуть m.collection2 другой функцией, которая возвращает true или false? Является ли этот синтаксис LINQ?