【问题标题】:Cannot implicitly convert type 'System.Collections.Generic.List<String>' to 'System.Collections.Generic.IEnumerable<turon.Model.Products_Products>无法将类型“System.Collections.Generic.List<String>”隐式转换为“System.Collections.Generic.IEnumerable<turon.Model.Products_Products>
【发布时间】:2015-08-04 05:05:40
【问题描述】:
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”。存在显式转换(您是否缺少演员表?)

【问题讨论】:

    标签: c# list ienumerable


    【解决方案1】:

    错误信息很清楚。您的 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&lt;string&gt;

    public IEnumerable<string> getprod()
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 我喜欢“Lambada 表达式”这个词 ;-)。
        猜你喜欢
        • 1970-01-01
        • 2011-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-07
        • 2013-05-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多