无法将类型隐式转换为List <string> </string>

时间:2012-08-03 12:17:34

标签: asp.net linq-to-sql sql-view

下午,

我收到以下错误,无法解决原因......有人可以看看,让我知道我哪里出错了。

无法将类型'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 个答案:

答案 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()