2012-08-03 88 views
0

下午,無法隱式轉換類型列出<string>

我收到以下錯誤,並不能明白爲什麼...可以有人請看看,讓我知道我要去的地方錯了。

不能鍵入「System.Collections.Generic.List」隱式轉換爲「System.Collections.Generic.List」

下面

是什麼,我嘗試使用,以得到一個列表等等我可以在亞馬遜上使用它。我試圖刪除.ToList()位,但似乎沒有任何工作。我打電話的MS SQL視圖「GetASINForUpdateLowPrices」,它返回一個列表返回產品的ASIN的

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

SQL爲我使用的觀點,這可能有助於一點點。

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

您需要初始化列表? – 2012-08-03 12:21:13

+0

是啊亞馬遜MWS需要它在這種格式*嘆息* – thatuxguy 2012-08-03 12:23:05

回答

0

當你打電話給你GetASINForUpdateLowPrices,它不會直接返回List<string>即使只有一個在你的視野。請嘗試以下方法:

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

Visual Studio的智能感知應鍵入item.後,建議你的屬性名稱。如果屬性不是字符串,請嘗試在屬性名稱的末尾添加.ToString()。

編輯:您的評論後,似乎你需要使用它作爲.Select(item => item.asin.ToString())

+0

添加了我的SQL查看... – thatuxguy 2012-08-03 12:26:33

+0

補充說,我使用該視圖的原因是由於SQL的寫法:) – thatuxguy 2012-08-03 12:28:50

+0

請參閱我的編輯請讓我知道它是否工作:) – 2012-08-03 12:29:32

1

哪些數據類型是單ASIN?可能您的GetASINForUpdateLowPrices不是IEnumerable<string>。試試這個確認:

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

酷這工作很好:) – thatuxguy 2012-08-03 12:34:03

0

只要使用var。

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

這當然會工作,但如果代碼後期預計'prodASINs'類型'列表'它不會工作。 – Yuck 2012-08-03 12:22:54

+0

他可以找出它返回的內容並根據需要進行轉換。 – 2012-08-03 12:28:57

+1

不能使用var,因爲亞馬遜代碼不會接受該代碼。因此,爲什麼我使用列表作爲他們所要求的 – thatuxguy 2012-08-03 12:30:14

0

您確定GetASINForUpdateLowPrices.ToList()創建了一個字符串列表嗎?我最好的估計是它是一個不同類型的通用列表。

要弄清楚發生了什麼 - 將List<string> prodASINS更改爲Object obj。然後通過使用調試器檢出對象來設置斷點,以查看ToList()代碼實際生成的List類型。然後,您可以更新您的代碼,將這些值移動到適當類型的列表中。

您可能需要投這樣轉讓的右側,最終完成任務(與其他類型替換字符串,如果必要的話) - List<string> prodASINs =(List<string>)dc.GetASINForUpdateLowPrices.ToList()

相關問題