如何在LinQ的列表视图中按类别对产品进行分组?

时间:2015-01-05 06:49:18

标签: asp.net-mvc linq group-by

我是一个新的asp.net mvc!

我有一个列表视图来显示产品:

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();
    }

2 个答案:

答案 0 :(得分: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的地方。

答案 1 :(得分:0)

使用GroupBy方法按类别ID进行分组。

EG。 Viewmodel.GroupBy(r =&gt; r.cateid)

请参阅here