剃刀:在foreach内部使用以在循环外使用

时间:2017-01-18 21:29:36

标签: c# razor foreach

好的,我将保持这么简短。

for (int i = 1; i < 3; i++)
{
    foreach (var c in db.Query(getData))
    {
        var total = c.kg * c.rep * c.sett;

        DateTime thisDay = c.date;
        nextDay = thisDay.AddDays(1);

        sumKG += total;
    }
    @sumKG <br />
}

因此,此处的代码在每次total循环时都会对foreach进行计算,每个循环都会给sumKG一个大的总计,但for loop会使foreach成为sumKG foreach loop再次循环,它应该,并且由于我也有其他sql代码对新数据进行新计算,但是,它将新计算添加到sumKG的旧值。所以在这种情况下,我知道第一个 <button id="cmdSave" type="button" class="btn btn-primary" onclick="SaveInfo();">Save</button> 将给出23000到 <input id="fileupload" type="file" name="files[]" style="display: none;"> ,第二轮它将给出5000,但在这种情况下它给我23000,然后是28000(23000 + 5000),并且所以,我不想这样,我想要23000然后5000.

这有什么意义吗?有什么解决方案吗?

1 个答案:

答案 0 :(得分:2)

在再次循环之前将变量设置为零:

for (int i = 1; i < 3; i++)
{
    foreach (var c in db.Query(getData))
    {
        var total = c.kg * c.rep * c.sett;

        DateTime thisDay = c.date;
        nextDay = thisDay.AddDays(1);

        sumKG += total;
    }
    @sumKG <br />
    @sumKG = 0;
}

或者不要使用+=

for (int i = 1; i < 3; i++)
{
    var total = 0;
    foreach (var c in db.Query(getData))
    {
        total = c.kg * c.rep * c.sett;

        DateTime thisDay = c.date;
        nextDay = thisDay.AddDays(1);
    }
    @sumKG = total;
    @sumKG <br />
}