如何循环和分组具有相同 ID 的项



>我需要能够按ID显示每个产品。例如,如果我有 3 个具有相同 id 的产品:计算数量并只显示一次。当 id 不同时,显示其他产品。

产品 1 数量 2 价格 10 小计 20

产品 2 数量 1 价格 20 小计 20

这是当前代码。

 <div class="yourorder">
            @foreach (var group in Model.Products.GroupBy(p => p.ID))
            {
                foreach (var prod in group)
                {
                    <div data-type="product" data-id="@group.First().ID" data-multiple="@group.First().Multiple" data-multiplecatid="@group.First().MultipleCategoryID" style="overflow:hidden;"></div>                            
                        @{Html.RenderAction("ShoppingCartProduct", "ShoppingCart", new { id = group.First().ID });}
                    </div>
                <br />
                <hr />
                }
            }
    </div

乔斯提出的解决方案让我得到了分组的盒子和数量。我想我可以使用以下方法获得数量:@group。第一((。计数 - 每个盒子

如果一个盒子有相同的 5 件商品,我希望能够显示该商品的单价以及该箱子的小计。我知道计算是单价*数量

但是我不知道如果价格是在另一个名为"购物车产品"的 PartialView 中计算的,我该如何计算每个产品小计。这是调用计算价格的视图的行:

@{Html.RenderAction("ShoppingCartProduct", "ShoppingCart", new { id = group.First().ID});}

购物车产品的内容:

    <div class="shoppingCartPrice">
@if (Model.Prod.HasRange && Model.Prod.WeightFrom.HasValue && Model.Prod.WeightTo.HasValue)
{
    <div>Price: $@Model.Prod.Price.Value.ToString("0.00")</div>
}

是否有可能有人可以指导我如何获得该计算,因此我的输出是:

产品 1 数量 2 价格 10 小计 20(数量 * 单价(

产品 2 数量 1 价格 20 小计 20(数量 * 单价(

非常感谢。

您可以使用 IEnumerable GroupBy 的扩展方法,然后在每个组中循环。

<div class="yourorder">
    @foreach (var group in Model.Products.GroupBy(p => p.ID))
    {
        foreach (var prod in group)
        {
            //Calculate subtotal here
        }
        <div data-type="product" data-id="@group.First().ID" data-multiple="@group.First().Multiple" data-multiplecatid="@group.First().MultipleCategoryID" style="overflow:hidden;"></div>
        <br />
        <div class="fancyDivider"></div>
    }
</div>

编辑:

该函数GroupBy与分组对应的每个项目进行分组。在您的示例中,它是ID。这就是为什么你必须:

  1. 遍历每个组并计算小计(如果超过组中的一个项目
  2. 显示每个组的div。

要计算小计,您可以简单地通过获取组的第一个产品并按产品数量来获取产品单价:

var subtotal = group.First().UnitPrice * group.Count()

现在,为了能够在 Partial View 中计算小计,您需要 2 件事:

  1. 产品介绍
  2. 本产品计数

所以,你可以做这样的事情:

@{Html.RenderAction("ShoppingCartProduct", "ShoppingCart", 
     new { id = group.First().ID, Count = group.Count()});}

最新更新