You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在循环中累加每个计算结果并存储到容器中?

累加计算结果并存储展示的解决方案

你的代码当前存在几个问题导致无法正确累加所有省份的百分比:

  • 每次循环都重新初始化total、temp2为0,无法保留之前的累加值
  • 内部的for循环没有实际作用,只是重复赋值同一个数值,无法实现累加
  • ViewBag.TotalPercent每次循环都会被覆盖,最终只保留最后一个省份的数值

以下是修正后的代码,实现了所有省份百分比的累加,并保留每个省份的单独数值:

// 在外部循环前初始化总累加变量
double totalPercent = 0;

foreach (var prov in provs)
{
    SpesGraduate x = new SpesGraduate();
    x.Province = prov.Province;
    x.yr1_TotalGrad = placed2.Where(plc => plc.POID == prov.ID).Count();
    x.yr1_ColTechvocGrad = placed2.Where(plc => plc.POID == prov.ID && (plc.GradEduc == "Tech-Voc" || plc.GradEduc == "College")).Count();
    x.yr1_PercentGrad = 0;
    x.yr2_TotalGrad = placed.Where(plc => plc.POID == prov.ID).Count();

    double answer;
    if (x.yr2_TotalGrad == 0 && x.yr1_TotalGrad == 0)
    {
        answer = 0;
    }
    else if (x.yr2_TotalGrad == x.yr1_TotalGrad)
    {
        answer = 100;
    }
    else if (x.yr1_TotalGrad == 0 && x.yr2_TotalGrad != 0)
    {
        answer = x.yr2_TotalGrad * 100;
    }
    else if (x.yr1_TotalGrad != 0 && x.yr2_TotalGrad == 0)
    {
        // 注意:原代码中x.yr2_TotalGrad是0,乘以-100结果还是0,若要表示100%下降,应改为answer = -100;
        answer = -100;
    }
    else
    {
        double increase = (x.yr2_TotalGrad - x.yr1_TotalGrad);
        answer = (increase / x.yr1_TotalGrad) * 100;
    }

    // 保存当前省份的百分比
    x.yr2_Percentage = answer;
    // 累加至总百分比
    totalPercent += answer;

    Graduates.Add(x);
}

// 将总累加值存入ViewBag,供前端表格展示
ViewBag.TotalPercent = totalPercent;

关键修改说明:

  • 将总累加变量totalPercent移到外部循环之前初始化,确保每次循环都能累加之前的结果
  • 移除了无意义的内部for循环,直接在每次循环中累加当前省份的百分比
  • 修正了x.yr2_TotalGrad ==0分支的逻辑(可选,根据你的业务需求调整)
  • 循环结束后再将总累加值存入ViewBag,避免被多次覆盖

这样,你可以通过Graduates列表展示每个省份的单独百分比,通过ViewBag.TotalPercent展示所有省份的百分比总和。

内容的提问来源于stack exchange,提问作者Mark John Capistrano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 07:13:17