如何解决此转换类型错误?
无法隐式转换类型 'System.Collections.Generic.List' 到'System.Collections.Generic.List
错误2无法隐式转换类型 '
System.Collections.Generic.List<AnonymousType#1>
' 至 'System.Collections.Generic.List<Product>
'D:\ Fortune \ App_Code \ BL \ StoreController.cs 204 45 D:\ Fortune \
public static List<Product> GetProductsByCategoryID(int productCategoryId )
{
FortuneDataContext db = SiteController.GetNewFortuneDataContext();
List<Product> prods = (from p in db.Products
join pc in db.ProductCategories
on p.ProductCategoryId equals pc.ProductCategoryId
where pc.ParentProductCategoryId == productCategoryId
select new
{
p.ProductId,
p.ProductCategoryId,
pc.ParentProductCategoryId,
ProductName = p.Name,
Category = pc.Name,
p.Price,
p.ProductYear
}).ToList();
return prods;
}
答案 0 :(得分:3)
将选择更改为
select new Product {ProductId = p.ProductID
...}).ToList();
或
select p ...
如果要提取所有产品字段
错误是您的列表项不是产品
答案 1 :(得分:3)
问题是您的查询未返回产品。它返回一个匿名类型,因为您使用select new {}来预测新类型。
select new { ... }
您可以创建一个在对象中具有类别名称的新类型,并更改方法以返回该类型,或者如果您使用linq to sql,则可以对返回的项目执行类似product.category.name的操作
List<Product> prods = (from p in db.Products
join pc in db.ProductCategories on p.ProductCategoryId equals pc.ProductCategoryId
where pc.ParentProductCategoryId == productCategoryId
select p).ToList<Product>();