0

下午,

我收到以下错误,但不知道为什么...有人可以看看,让我知道我哪里出错了。

无法将类型“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()))))
4

4 回答 4

1

单一ASIN是什么数据类型?

可能您GetASINForUpdateLowPrices的不是IEnumerable<string>. 试试这个来确认:

List<string> prodASINs = dc.GetASINForUpdateLowPrices
                           .Select(e => e.ToString())
                           .ToList();
于 2012-08-03T12:20:39.897 回答
0

你确定GetASINForUpdateLowPrices.ToList()会创建一个字符串列表吗?我最好的估计是它是不同类型的通用列表。

弄清楚发生了什么——改变List<string> prodASINS成为Object obj。然后设置断点,通过使用调试器检查对象来查看 ToList() 代码实际生成的 List 类型。然后,您可以更新代码以将值移动到适当类型的列表中。

您可能必须像这样强制分配分配器的右侧才能最终完成工作(如有必要,将字符串替换为另一种类型) -List<string> prodASINs =(List<string>)dc.GetASINForUpdateLowPrices.ToList()

于 2012-08-03T12:33:08.727 回答
0

只需使用 var。

var prodASINs = dc.GetASINForUpdateLowPrices.ToList();
于 2012-08-03T12:21:47.333 回答
0

当您调用 GetASINForUpdateLowPrices 时,List<string>即使您的视图中只有一个字段,它也不会直接返回。尝试以下方法:

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

Visual Studio IntelliSense 应在键入 后向您建议属性名称item.。如果属性不是字符串,请尝试在属性名称的末尾添加 .ToString()。

编辑:在您发表评论后,您似乎需要将其用作.Select(item => item.asin.ToString()).

于 2012-08-03T12:22:54.157 回答