Reputation:
Cannot implicitly convert type 'System.Collections.Generic.List' to 'System.Collections.Generic.List
Error 2 Cannot implicitly convert type 'System.Collections.Generic.List<AnonymousType#1>' to '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;
}
I want to get all fields in select new {...} , I wirte the select like that but all fields are not in Product table.....
select new Product
{
p.ProductId,
p.ProductCategoryId,
pc.ParentProductCategoryId,
ProductName = p.Name,
Category = pc.Name,
p.Price,
p.ProductYear
}).ToList();
how can I write the statement? please.....
Upvotes: 2
Views: 24908
Reputation: 1011
i have come across the same problem.. you should change List<Product> prods
to var prods
Upvotes: 0
Reputation: 1
Instead of select new, use select new Product. It will return a list of type Product:
...
select new Product
{
p.ProductId,
p.ProductCategoryId,
pc.ParentProductCategoryId,
ProductName = p.Name,
Category = pc.Name,
p.Price,
p.ProductYear
}).ToList();
return prods;
Upvotes: 6
Reputation: 10650
You are creating an anonymous type, and you can't return an anonymous type from a method (there actually is a way but it is complicated compared to just making a new class and not worth it), and it doesn't match the signature of List either. So you'll have to create a new class that contains a definition for all the properties you want, for example ProductDetails, and return a List.
Upvotes: 1
Reputation: 13234
You're selecting an anonymous type in this line:
select new { ... }
Try this line:
select p
If you're trying to return a List<Product>
, you won't be able to put ProductCategory
information in the returned list unless Product
has a navigational property that links to ProductCategory
.
Upvotes: 3
Reputation: 19863
When you declare List as a type you should consider adding the correct templates
for example
public static List<Product> GetProductsByCategoryID(...)
Upvotes: 1