2015-01-07 4 views
0

я получаю ошибку, когда я вернусь в группу список продуктов по категориям:Как вернуть Linq GroupBy

Ошибка 1 Не удается неявно преобразовать тип «System.Linq.IQueryable>» на «System.Linq.IQueryable ». Явное преобразование существует (вы пропали без вести бросок?)

Мой код:

public IQueryable<GroupModel> GetAll() 
    { 
     List<Category> listCategories = new List<Category> 
     { 
      new Category {Id = 1, CateName = "SmartPhone", Description = "aaaaaa"}, 
      new Category {Id = 2, CateName = "Laptop", Description = "bbbb"}, 
      new Category {Id = 3, CateName = "Desktop", Description = "ccccc"}, 
     }; 

     List<Product> listProducts = new List<Product> 
     { 
      new Product {Id = 1, ProdName = "Lumia 720", CategoryId = 1, ColorId = 2}, 
      new Product {Id = 2, ProdName = "PC HP", CategoryId = 3, ColorId = 1}, 
      new Product {Id = 3, ProdName = "PC Dell", CategoryId = 3, ColorId = 1}, 
      new Product {Id = 4, ProdName = "Laptop Lenovo", CategoryId = 2, ColorId = 2}, 
      new Product {Id = 5, ProdName = "Lumia 920", CategoryId = 1, ColorId = 2}, 
      new Product {Id = 6, ProdName = "Laptop Dell", CategoryId = 2, ColorId = 3}, 
      new Product {Id = 7, ProdName = "Laptop HP", CategoryId = 2, ColorId = 3}, 
      new Product {Id = 7, ProdName = "Lumia 1020", CategoryId = 1, ColorId = 1} 
     }; 

     List<Color> listColors = new List<Color> 
     { 
      new Color {ColorId = 1, ColorName = "Blue"}, 
      new Color {ColorId = 2, ColorName = "Yellow"}, 
      new Color {ColorId = 3, ColorName = "Red"} 
     }; 

     var query = (from p in listProducts 
        join co in listColors on p.ColorId equals co.ColorId 
        join c in listCategories on p.CategoryId equals c.Id into e 
        from j in e.DefaultIfEmpty() 

        select new GroupModel 
        { 
         CategoryId = j.Id, 
         CategoryName = j.CateName, 
         ProductId = p.Id, 
         ProductName = p.ProdName, 
         ColorId = co.ColorId, 
         ColorName = co.ColorName 

        }).ToList().GroupBy(x => x.CategoryName); 



     return query.AsQueryable(); 
    } 
+0

Разница заключается в том, что это два разных типа: IQueryable и IQueryable . Я думаю, это проблема, которую вы должны бросить. AFAIK IQueryable что-то вроде IQueryable JoshuaBehrens

ответ

1

Ваш запрос LINQ reutrning IGrouping<string,GroupViewModel> не IQueryable<GroupViewModel>. Измените метод подписи к этому:

public IQueryable<IGrouping<string,GroupViewModel>> GetAll() 
{ 
var query = (from p in listProducts 
      ....................... 
      ....................... 
return query.AsQueryable<IGrouping<string,GroupViewModel>>(); 

} 

DEMO FIDDDLE

+0

Большое вам спасибо. Моя проблема решена –

1

Попробуйте следующее в качестве последнего оператора

return query.SelectMany(x=>x).AsQueryable();