2010-08-17 3 views
1

J'ai un site Web que j'ai développé dans VS 2008 ciblant .net 3.5. Cela a bien fonctionné. Je suis récemment passé à VS 2010 et je devais apporter quelques modifications au site. Cependant, je reçois des erreurs de compilation (je n'ai pas encore apporté de modifications au code - je suis en train de lancer le site pour m'assurer que tout fonctionne correctement). Je reçois "Contient" n'est pas un membre de system.array. Tout ce que j'ai lu indique que la méthode contains a été ajoutée dans .net 3.5, ce que je sais être correct car il fonctionnait dans VS 2008. J'ai ciblé .net 3.5 dans VS 2010, mais cela ne fonctionne toujours pas . J'ai aussi beaucoup utilisé linqkit avec linqkit pour faire des requêtes dynamiques et toutes mes requêtes linq disaient que mes requêtes n'étaient pas interrogeables (je n'ai pas l'erreur réelle devant moi). Quoi qu'il en soit, pour réparer celui-là, j'ai dû importer system.linq (j'avais auparavant system.data.linq et ça marchait bien). Pour réitérer, je n'ai pas ciblé mon site sur .net 4 dans VS 2010, je l'ai laissé cibler .net 3.5.Après la mise à niveau de VS 2008 vers VS 2010, l'obtention de Contains n'est pas membre de l'erreur system.array

J'ai essayé de convertir mes tableaux en arraylists parce que les arraylists continuaient toujours avec une méthode .contains, mais cela a cassé mes requêtes linqkit quand je l'ai couru sur le site.

Voici ma requête 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)) 

Avant, je n'ai pas la conversion de arraylist, je viens d'avoir str.contains et il a très bien fonctionné pour générer un sql « dans » déclaration. Maintenant, après avoir utilisé le code ci-dessus, le site se lance, mais lorsque je lance le code, la méthode 'Boolean Contains (System.Object)' n'a pas de traduction en SQL. J'ai également essayé de mettre à jour mon linqkit dll à la dernière version mais cela n'a pas aidé. Mes questions sont, puisque je vise le même framework .net 3.5 en 2010, pourquoi ne me permet-il plus d'utiliser array.contains? Peut-être que si je peux résoudre ce problème, il va corriger mon problème de linqkit où il est dit que "contains" n'a pas de traduction supportée par sql.

Toute aide serait appréciée. Je ne veux pas revenir à vs 2008 juste pour fixer mon site ...

+0

Quelle langue? – ChrisF

+0

Contient est une méthode d'extension (partie de la classe Enumerable). Avez-vous inclus une référence 'using System.Linq;' Pouvez-vous utiliser l'une des autres méthodes d'extension? –

+0

J'utilise vb.net dans asp.net. J'utilisais auparavant les importations system.data.linq et après avoir mis à jour vers 2010, il m'a essentiellement dit que je devais ajouter les importations system.linq aussi bien. Cela a corrigé l'erreur d'origine, je n'ai pas été questionable, mais j'ai toujours le problème avec "contains" n'étant pas une méthode de system.array qui peut causer le problème avec linqkit et ma requête linq dynamique où je reçois le message La méthode 'Boolean Contains (System.Object)' n'a pas de traduction prise en charge vers SQL. – Lance

Répondre

-2

Faites un clic droit sur le projet -> Ouvrir des pages de propriétés (Maj + F4)

Définir Framework cible pour .NET Framework 3.5 puis cliquez sur OK et construisez le projet.

Questions connexes