【问题标题】:How to do a + (sum) operation on a list by grouping如何通过分组对列表进行+(求和)操作
【发布时间】:2021-09-23 13:10:56
【问题描述】:

我正在尝试按类别将总数相加,但在页面 cshtml 中没有得到正确的结果。

我试过了:

 <span style="font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif !important ; font-size: 18px !important ; color: #4CAF50 !important ; font-weight: 700 !important ; float: right !important">
                                Total:
                                <span style="color: #212121 !important">
                                    @{

                                        var agrupamentoPorCategoria = Model.itens.GroupBy(c => c.idCategoria);
                                        string totalPorCategoria = "";

                                        foreach (var itensPorCategoria in agrupamentoPorCategoria)
                                        {
                                            totalPorCategoria = itensPorCategoria.Sum(s => s.vSubTotal).ToString("N2");
                                        }

                                        //var totalPorCategoria = Model.itens.Sum(s => s.vSubTotal);
                                    }

                                    @totalPorCategoria
                                </span>
</span>

预期结果是通过对类别进行分组来汇总小计列。

在上图中的示例中,该值必须为 5,557.55

【问题讨论】:

  • 你的循环将只取最后一个分组并将其相加。相反,您需要过滤当前类别并对其进行求和。像var totalPorCategoria = Model.itens.Where(c =&gt; c.idCategoria == currentId).Sum(s =&gt; s.vSubTotal); 这样的东西。或者你真的应该先进行分组,然后遍历组并为每个组创建输出并在最后计算总和。我们需要查看更多代码来了解您当前的处理方式。
  • 谢谢,效果很好!将您的解决方案作为我发出信号的答案。

标签: c# logic


【解决方案1】:

您需要选择所有项目,然后执行求和。这应该有效:

var totalPorCategoria = Model.itens.Where(c => c.idCategoria == currentId).Sum(s => s.vSubTotal);

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2022-06-20
    • 2019-01-25
    相关资源
    最近更新 更多