После обновления с VS 2008 до VS 2010 получение Contains не является членом ошибки system.array - PullRequest
1 голос
/ 17 августа 2010

У меня есть веб-сайт, который я разработал в VS 2008 с таргетингом на .net 3.5. Это сработало хорошо. Я недавно обновился до VS 2010 и мне нужно было внести несколько изменений в сайт. Тем не менее, я получаю ошибки компиляции (пока не вносил никаких изменений в код - просто запустил сайт, чтобы убедиться, что он работает нормально). Я получаю «Содержит» не является членом system.array. Все, что я прочитал, говорит о том, что метод contains был добавлен в .net 3.5, и я знаю, что он правильный, потому что он работал в VS 2008. Я нацелился на .net 3.5 в VS 2010, но он все еще не работает , Я также довольно часто использовал linq с linqkit для выполнения динамических запросов, и все мои запросы linq говорили, что мои запросы нельзя было запросить (у меня нет реальной ошибки передо мной). В любом случае, чтобы исправить это, мне пришлось импортировать system.linq (ранее у меня был system.data.linq, и он работал нормально). Повторюсь, я не нацелил свой сайт на .net 4 в VS 2010, я оставил его нацеленным на .net 3.5.

Я пытался преобразовать мои массивы в списки массивов, поскольку списки массивов все еще работали с методом .contains, но затем он прервал мои запросы linqkit, когда я запустил его на сайте.

Вот мой запрос linqkit:

 Dim str() As String = archlist.ToArray(GetType(String))
        Dim str3 As New ArrayList
        str3 = ArrayList.Adapter(str)
        predicate = predicate.And(Function(l As CompatTesting) str3.Contains(l.application.cpuarchitecture))

Раньше у меня не было преобразования arraylist, у меня просто был str.contains, и он прекрасно работал для генерации sql-выражения in. Теперь, после использования приведенного выше кода, сайт запускается, но когда я фактически запускаю код, я получаю, что метод «Boolean Contains (System.Object)» не поддерживает перевод на SQL. Я также попытался обновить dll linqkit до последней версии, но это не помогло.

Мои вопросы: поскольку в 2010 году я ориентируюсь на ту же платформу .net 3.5, почему она больше не позволяет мне использовать array.contains? Возможно, если я смогу решить эту проблему, это исправит мою проблему с linqkit, в которой говорится, что «содержит» не поддерживает перевод в sql.

Любая помощь будет оценена. Я не хочу возвращаться к версии 2008, чтобы исправить свой сайт ...

1 Ответ

0 голосов
/ 09 декабря 2010

Щелкните правой кнопкой мыши по проекту -> Открыть страницы свойств (Shift + F4)

Установите для Target Framework .NET Framework 3.5, затем нажмите OK и создайте проект.

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