2014-12-02 83 views
0

我需要能够通过ID显示每个产品。 例如,如果我有3个产品具有相同的ID:计数数量,只显示一次。 当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 

Joce提出的解决方案让我得到了分组框和数量。我认为我可以使用的数量为:@ group.First()。Count - 对于每个盒子

如果一个盒子有相同的5个项目,我希望能够显示该项目的单价和小计那个盒子。我知道计算是单价*数量

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

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

ShoppingCartProduct的内容:

<div class="shoppingCartPrice"> 
@if (Model.Prod.HasRange && Model.Prod.WeightFrom.HasValue && Model.Prod.WeightTo.HasValue) 
{ 
    <div>Price: [email protected]("0.00")</div> 
} 

是否有可能有人能指导我如何获取计算等等我的产量是:

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

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

非常感谢。

+0

是物品已经被订购ID? – 2014-12-02 21:46:28

回答

1

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

<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。

要计算小计,你可以简单地通过获得该组的第一个产品按产品数量获得的产品单价和mutiply它:

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

现在,为了能够计算在PartialView小计,你需要两件事情:

  1. 产品
  2. 该产品的数量

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

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

嗨乔斯,你愿意教我如何能够做小计的计算?非常感谢。 – 2014-12-03 04:48:41

相关问题