У метода 'Boolean Contains (System.String)' нет поддерживаемого перевода в SQL - PullRequest
14 голосов
/ 09 марта 2009

«У метода« Boolean Contains (System.String) »нет поддерживаемого перевода в SQL.»

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

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

                }
}

ОБНОВЛЕНИЕ: это работает, когда я делаю запрос "ienumerable" вместо iqueryable. Как можно получить тот же результат, используя linq вместо итерации цикла?

Ответы [ 4 ]

22 голосов
/ 26 октября 2011

Попробуйте это:

query = query.Where(m => m.collection2.ToList().Contains(s));
                                       ^^^^^^^^
2 голосов
/ 09 марта 2009

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

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

1 голос
/ 03 июня 2010

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

m.collection2.Any(x => x == s)
0 голосов
/ 09 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...