2012-08-03 1 views
0

Après-midi,Impossible de convertir implicitement le type à la liste <string>

Je reçois l'erreur suivante, et cant comprendre pourquoi ... Peut quelqu'un s'il vous plaît jeter un oeil et laissez-moi savoir où je me trompe.

ne peut pas convertir implicitement le type « System.Collections.Generic.List » à « System.Collections.Generic.List »

ci-dessous est ce que je suis en train d'utiliser, pour obtenir une liste de retour si Je peux l'utiliser avec Amazon. J'ai essayé d'enlever le bit .ToList() mais rien ne semble fonctionner. Je demande une MS SQL vue « GetASINForUpdateLowPrices » qui retourne une liste de produits retour

List<string> prodASINs = dc.GetASINForUpdateLowPrices.ToList(); 

SQL d'ASIN pour la vue que je utilise, cela peut aider un peu plus.

SELECT  asin 
FROM   dbo.aboProducts 
WHERE  (asin NOT IN 
      (SELECT  aboProducts_1.asin 
      FROM  dbo.aboProducts AS aboProducts_1 INNER JOIN 
         dbo.LowestPrices ON aboProducts_1.asin = dbo.LowestPrices.productAsin 
      WHERE  (dbo.LowestPrices.priceDate >= DATEADD(day, - 1, GETDATE())))) 
+0

Vous devez initialiser la liste? –

+0

oueah amazon MWS en a besoin dans ce format * sigh * – thatuxguy

Répondre

0

Lorsque vous appelez votre GetASINForUpdateLowPrices, il l'habitude de revenir directement List<string> même s'il n'y a qu'un seul champ dans votre vue. Essayez l'approche suivante:

List<string> prodASINs = dc.GetASINForUpdateLowPrices 
         .Select(item => item.AsinFieldName) 
         .ToList(); 

Visual Studio IntelliSense devrait vous suggérer le nom de la propriété après avoir tapé item.. Si la propriété n'est pas une chaîne, essayez d'ajouter .ToString() à la fin du nom de la propriété.

Modifier: Après votre commentaire, il semble que vous ayez besoin de l'utiliser comme .Select(item => item.asin.ToString()).

+0

ajouté mon SQL pour la vue ... – thatuxguy

+0

ajouté, la raison pour laquelle j'utilisais la vue était en raison de la façon dont le SQL a été écrit :) – thatuxguy

+0

Voir mon edit s'il vous plaît, laissez-moi savoir si cela fonctionne :) –

1

Quel type de données est un seul ASIN? Il est possible que votre GetASINForUpdateLowPrices ne soit pas IEnumerable<string>. Essayez ceci pour confirmer:

List<string> prodASINs = dc.GetASINForUpdateLowPrices 
          .Select(e => e.ToString()) 
          .ToList(); 
+0

cool cela a bien fonctionné :) – thatuxguy

0

Utilisez simplement var.

var prodASINs = dc.GetASINForUpdateLowPrices.ToList(); 
+1

Cela fonctionnera, bien sûr, mais si le code attend plus tard que 'prodASINs' soit de type' Liste 'ça ne marchera pas. – Yuck

+0

Il peut comprendre ce qu'il retourne et le convertir si nécessaire. –

+1

ne peut pas utiliser une var, car le code Amazon ne l'acceptera pas. ainsi pourquoi j'emploie la liste car c'est ce qu'ils demandent – thatuxguy

0

Etes-vous sûr que GetASINForUpdateLowPrices.ToList() crée une liste de chaînes? Ma meilleure estimation est que c'est une liste générique d'un type différent.

Pour savoir ce qui se passe, remplacez List<string> prodASINS par Object obj. Définissez ensuite un point d'arrêt pour voir quel type de liste est réellement généré par votre code ToList() en extrayant l'objet à l'aide du débogueur. Vous pouvez ensuite mettre à jour votre code pour déplacer les valeurs dans une liste du type approprié.

Vous pourriez avoir à jeter le côté droit du cédant comme celui-ci pour finalement faire le travail (chaîne remplaçant par un autre type si nécessaire) - List<string> prodASINs =(List<string>)dc.GetASINForUpdateLowPrices.ToList()

Questions connexes