不能隐式转换类型'System.Collections.Generic.List& # 39;

本文关键字:List String Generic System 转换 类型 不能 Collections | 更新日期: 2023-09-27 17:50:19

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"。列表'到'System.Collections.Generic.IEnumerable'。存在显式转换(您是否缺少强制类型转换?)

不能隐式转换类型'System.Collections.Generic.List<String>& # 39;

错误信息非常清楚。你的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()

lambda表达式从每个产品获取ProductName,并将其收集为字符串集合。我建议你改成:

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

您可以使用.FirstOrDefaultFirst,它总是解决我的问题