下午,
我收到以下错误,无法解决原因......有人可以看看,让我知道我哪里出错了。
无法将类型'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 :(得分:1)
单个 ASIN 的数据类型是什么?
可能您的GetASINForUpdateLowPrices
不是IEnumerable<string>
。试试这个确认:
List<string> prodASINs = dc.GetASINForUpdateLowPrices
.Select(e => e.ToString())
.ToList();
答案 1 :(得分:0)
只需使用var。
var prodASINs = dc.GetASINForUpdateLowPrices.ToList();
答案 2 :(得分:0)
当您调用GetASINForUpdateLowPrices时,即使视图中只有一个字段,它也不会直接返回List<string>
。尝试以下方法:
List<string> prodASINs = dc.GetASINForUpdateLowPrices
.Select(item => item.AsinFieldName)
.ToList();
Visual Studio IntelliSense应在输入item.
后建议您输入属性名称。如果属性不是字符串,请尝试在属性名称的末尾添加.ToString()。
修改:发表评论后,您似乎需要将其用作.Select(item => item.asin.ToString())
。
答案 3 :(得分:0)
您确定GetASINForUpdateLowPrices.ToList()
会创建一个字符串列表吗?我最好的估计是它是一个不同类型的通用列表。
要弄清楚发生了什么 - 将List<string> prodASINS
更改为Object obj
。然后通过使用调试器检出对象来设置断点以查看ToList()代码实际生成的List类型。然后,您可以更新代码以将值移动到相应类型的列表中。
您可能必须像这样投射转让人的右侧以最终完成工作(如有必要,用其他类型替换字符串) - List<string> prodASINs =(List<string>)dc.GetASINForUpdateLowPrices.ToList()