2015-01-05 4 views
1

Я новичок asp.net mvc!Как сгруппировать продукт по категориям в виде списка по LinQ?

Я имею представление списка для отображения продуктов:

Id CateId CateName 
1 2  Cate-B 
|__ Product-B 
2 1  Cate-A 
|__ Product-A 
3 1  Cate-A 
|__ Product-C 

, но теперь я хочу, чтобы отобразить группу продукты представления списка по категориям, как показано ниже. Как мне это сделать ?

Id CateId CateName 
1 2  Cate-B 
|__ Product-B 
2 1  Cate-A 
|__ Product-B 
|__ Product-C 

это мой код:

 public IQueryable<MyGroup> GetAllProduct() 
    { 
     var query = (from c in _categoryRepository.Table() 
        join p in _productRepository.Table() on c.Id equals p.CateId 
        select new MyGroup 
        { 
         Categories= c, 
         Products = p 

        }).ToList(); 

     return query.AsQueryable(); 
    } 
+0

Привет @RahulSingh Я добавил свой код. –

+0

Какой бы код вы ни разместили, я не могу найти никакого сходства с таблицей вашей таблицы, где вы извлекаете такие значения, как 'Id, CateId, CateName'? –

+0

Извините @RahulSingh Я отредактировал мой код, как мой вопрос :) –

ответ

1

Если я понял ваш вопрос правильно, это то, что вам нужно: -

var query = _categoryRepository.Table() 
       .GroupBy(x => new { x.Id, x.CateId, x.CateName }) 
       .Select(x => new 
        { 
         x.Key.Id, 
         x.Key.CateId, 
         x.Key.CateName, 
         ProductsNames = _productRepository.Table() 
             .Where(p => p.CategoryId == x.Key.CateId) 
             .Select(p => p.ProductName).ToList() 
        }).ToList(); 

Здесь есть Demo для таких же где я использовал LINQ-To-Objects.

0

Используйте метод GroupBy группировать по категориям Id.

Например. Viewmodel.GroupBy (г => r.cateid)

См here

Смежные вопросы