2010-12-03 2 views
0

J'ai une requête LINQ avec une comparaison de varchar à intfonction LINQ échoue sur la conversion de type

soemthing = Lookups.Where(Function(lookupToSearch) lookupToSearch.ServiceFeature = 
CONST_ServiceFeature_EventLog And _ 
lookupToSearch.Name = CONST_ActivityTypeLookup_Name And _ 
lookupToSearch.Value = type.ToString()).FirstOrDefault.EntityKey 

lookupToSearch.Value est varchar type est un enum

quelques-unes des valeurs lookuptosearch sont des lettres et ils Impossible de convertir en int.

Quelle est la meilleure façon de résoudre ce problème, étant donné que je ne peux pas modifier les données composées de lettres et de chiffres?

Répondre

0

Je ne suis pas sûr mais à partir de votre code, je suppose que le type de données de la variable "type" n'est pas supporté sur la base de données, ni sa conversion en chaîne. Donc, ma recommandation serait de lancer le type var en chaîne avant d'interroger la base de données, et de comparer lookupToSearch.Value à la variable de chaîne représentant type.ToString().

Dim str as String 
str = type.ToString() 
soemthing = Lookups.Where(Function(lookupToSearch) lookupToSearch.ServiceFeature = 
CONST_ServiceFeature_EventLog And _ 
lookupToSearch.Name = CONST_ActivityTypeLookup_Name And _ 
lookupToSearch.Value = str).FirstOrDefault.EntityKey 
+0

Cela a fonctionné merci. J'ai essayé dans la ligne ToString() comme lookupToSearch.Value = type.ToString() qui a retourné une erreur. Quelque chose à propos de l'objet nul. – Tigran