Asp.net 无法隐式转换类型';System.Collections.Generic.List';至';System.Collections.Generic.List

Asp.net 无法隐式转换类型';System.Collections.Generic.List';至';System.Collections.Generic.List,asp.net,Asp.net,我怎样才能写这份声明?请…< p>当你将列表声明为一个类型时,你应该考虑添加正确的模板 比如说 select new Product { p.ProductId, p.ProductCategoryId, pc.ParentProductCategoryId,

我怎样才能写这份声明?请…

< p>当你将列表声明为一个类型时,你应该考虑添加正确的模板

比如说

          select new Product
                    {
                       p.ProductId,
                       p.ProductCategoryId,
                       pc.ParentProductCategoryId,               
                       ProductName = p.Name,
                       Category = pc.Name,
                       p.Price,
                       p.ProductYear
                       }).ToList();  
公共静态列表GetProductsByCategoryID(…)

您正在此行中选择匿名类型:

public static List<Product> GetProductsByCategoryID(...)
select new { ... }
试试这句话:

public static List<Product> GetProductsByCategoryID(...)
select new { ... }

如果您试图返回
列表
,则无法将
产品类别
信息放入返回的列表中,除非
产品
具有链接到
产品类别

的导航属性。您正在创建匿名类型,并且无法从方法返回匿名类型(实际上有一种方法,但与仅仅创建一个新类相比是复杂的,不值得),并且它也与列表的签名不匹配。因此,您必须创建一个新类,该类包含所需所有属性的定义,例如ProductDetails,并返回一个列表。

使用选择新产品而不是选择新产品。它将返回产品类型的列表:

select p

我遇到了同样的问题..您应该将
List prods
更改为
var prods