【问题标题】:How to group product by category on list view by LinQ?如何在 LinQ 的列表视图中按类别对产品进行分组?
【发布时间】:2015-01-05 06:49:17
【问题描述】:

我是新手 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();
    }

【问题讨论】:

  • 嗨@RahulSingh 我已经添加了我的代码。
  • 无论您发布了什么代码,我都找不到与您的表格有任何相似之处,您在其中获取 Id, CateId, CateName 之类的值?
  • 对不起@RahulSingh 我已经像我的问题一样编辑了我的代码:)
  • 请检查我的答案,如果没问题,请告诉我。
  • @RahulSingh 如何将查询结果传递给 razor 中的列表视图?

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


【解决方案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 的地方相同。

【讨论】:

    【解决方案2】:

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

    例如。 Viewmodel.GroupBy(r => r.cateid)

    here

    【讨论】:

      猜你喜欢
      • 2018-12-10
      • 1970-01-01
      • 2021-08-05
      • 2012-11-03
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多