我需要能够按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
Joce提出的解决方案为我提供了分组框和数量。我想我可以使用:@ group.First()。计数 - 每个盒子
如果一个方框有相同的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: $@Model.Prod.Price.Value.ToString("0.00")</div>
}
是否有人可以指导我如何进行计算,以便输出:
产品1数量2价格10小计20(数量*单价)
产品2数量1价格20小计20(数量*单价)
非常感谢。
答案 0 :(得分:1)
您可以使用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
。
这就是为什么你必须:
要计算小计,您可以通过获取该组的第一个产品来获得产品单价,并将其与产品数量相比较:
var subtotal = group.First().UnitPrice * group.Count()
现在,为了能够在PartialView中计算小计,您需要做两件事:
所以,你可以这样做:
@{Html.RenderAction("ShoppingCartProduct", "ShoppingCart",
new { id = group.First().ID, Count = group.Count()});}