在 MVC4 视图中按类别对订单进行分组

Posted

技术标签:

【中文标题】在 MVC4 视图中按类别对订单进行分组【英文标题】:Grouping orders by category in MVC4 View 【发布时间】:2013-11-11 10:22:26 【问题描述】:

在我们的 MVC4 应用程序中,我的数据库有一个 Orders 表、一个 Products 表和一个 Category 表。每个订单都有一个外键关系中的产品(加上数量),并且该产品属于具有外键的类别。

所以 Order 有一个 OrderId、ProductId(FK 到 Product)、一个数据加上一个数量,而 Product 有一个 ProductId、Name 和一个 CategoryId(FK 到 Category),Category 有一个 CategoryId 和一个 Name。

现在我们要制作一个“购物清单”,显示当天订购的类别,并在类别名称下方显示产品。

下面基于question 的查询就是这样做的(除了检查日期):

public ActionResult Index()
    
        var orders = db.Orders.Include(o => o.Product)
            .Include(o => o.Product.Category)
            .GroupBy(o => o.Product.Category.Name)
            .Select(cat => cat.FirstOrDefault());

        return View(orders.ToList());
     

在我们看来,我可以通过以下方式显示不同的类别:

@foreach (var cat in Model) 
   <table>
       <tr>
           <td>
                @html.DisplayFor(catName=> cat.Product.Category.Name)
           </td>
        </tr>
   </table>

下一步是在 for 循环中显示不同的订购产品和数量。所以它看起来像这样,例如:

*Fruit*
Banana x2
Apple x1

*Drinks*
Milk x1

我正在为此苦苦挣扎,想知道该怎么做。希望有大神指点一下

【问题讨论】:

【参考方案1】:

好的,我们通过创建一个元组解决了这个问题:

public ActionResult Index()

    var orders = db.Orders.Include(o => o.Product)
        .GroupBy(o => o.Product.Category.Name)
        .Select(cat => cat.FirstOrDefault());

    var products = db.Orders.Include(o => o.Product);

    return View(Tuple.Create(orders.ToList(), products.ToList()));

在视图中:

@foreach (var item in Model.Item1) 
   <table>
       <tr>
           <td>
               @Html.DisplayFor(catName => item.Product.Category.Name)
               <br />

               @foreach (var product in Model.Item2)
               
                  if (product.Product.Category.Name == item.Product.Category.Name)
                  
                        @Html.DisplayFor(productName => product.Product.Name)
                        @Html.DisplayFor(productName => product.Quantity) <br />
                  
               

           </td>
        </tr>
   </table>

现在看起来有点蹩脚,但它确实有效!

【讨论】:

以上是关于在 MVC4 视图中按类别对订单进行分组的主要内容,如果未能解决你的问题,请参考以下文章

我如何更好地在 woocommerce rest api 中按类别对产品进行分组?

在 jQuery 中按数据属性对 HTML 元素进行分组和计数

如何在 Pandas 中按子类别分组? [复制]

Flutter如何根据某个值从firebase对列表进行分组

即使没有结果,如何在分组的 MS Access 报告中显示类别

如何对相似的类别进行分组?