无法将类型'System.Collections.Generic.List<String>'隐式转换为'System.Collections.Generic.IEnumerable<turon.Model.Products_Products>'

4
public IEnumerable<Products_Products> getprod()
{
    var db = new Model.atengturonDBEntities();
    IEnumerable<Products_Products> x = new List<Products_Products>();
    var test = (from name in db.Products_Products select 
                    name.ProductName).ToList();
    x = test;
    return x;
}

为什么我会遇到这个错误?我还试图将所有的'IEnumerable'更改为'List',请帮忙!谢谢 :)

无法隐式地将类型'System.Collections.Generic.List'转换为'System.Collections.Generic.IEnumerable'。存在显式转换(是否缺少强制转换?)

3个回答

6
错误信息很明显。你的LINQ查询返回了一个string集合,因为你选择了name.ProductName,但是你的方法声明要返回一个Products_Products集合。

修改你的LINQ查询,不仅要返回ProductName,还要返回产品本身:

IEnumerable<Products_Products> x = new List<Products_Products>();
var test = (from name in db.Products_Products select 
                name).ToList();

可以将其替换为 db.Products_Products.ToList()

或者将您的方法更改为返回 IEnumerable<string>

public IEnumerable<string> getprod()

3
return (from name in db.Products_Products select 
             name).ToList();

2
我喜欢“Lambada表达式”这个术语;-)。 - Bart Friederichs

2

你可以使用 .FirstOrDefault 或者 First 方法,它们总是能解决我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接