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

Cannot implicitly convert type 'System.Collections.Generic.List<String>' to 'System.Collections.Generic.IEnumerable<turon.Model.Products_Products>

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',救救我!谢谢:)

Cannot implicitly convert type 'System.Collections.Generic.List' to 'System.Collections.Generic.IEnumerable'. An explicit conversion exist(are you missing a cast?)

Lambada 表达式从每个产品获取 ProductName 并将其收集为字符串集合。我建议您将其更改为:

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

错误信息很清楚。您的 LINQ 查询 return 的 string 集合,因为您正在选择 name.ProductName,但您的方法声明为 return Products_Products 的集合。

将您的 LINQ 查询更改为 return,不仅仅是 ProductName,而是产品本身:

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

(也可以只替换为 db.Products_Products.ToList()

或将方法更改为return IEnumerable<string>

public IEnumerable<string> getprod()

你可以使用 .FirstOrDefaultFirst 它总能解决我的问题