【问题标题】:How can I convert a ForEach into a For loop如何将 ForEach 转换为 For 循环
【发布时间】:2018-06-11 21:24:38
【问题描述】:

我正在努力在评分后显示大量评论,我编写的代码有效,但我意识到它最终会显示每个评论的命令,所以如果有两条评论,我会看到“1 Review 1 Review”。我已经为此工作了一段时间,对 MVC、C# 等仍然有点新,似乎无法弄清楚如何将其更改为一个 for 循环,该循环将计算 ReviewCount 并将其显示为单行1 个或多个“评论”表示。我尝试将其展开,但无法调用局部变量,这就是我卡住的地方!

@foreach (var review in item.Campaign.Reviews)
    {

        int ReviewCount = 0;
        ++ReviewCount;
        if (ReviewCount > 1)
        {
            @Html.Raw(ReviewCount)
            @Html.Raw(" Reviews")
        }
        else
        {
            @Html.Raw(ReviewCount)
            @Html.Raw(" Review")
        }
    }

【问题讨论】:

  • 您的代码没有任何意义。你甚至明白它的作用吗?
  • 此外,您在计数时每次评论输出一次ReviewCount,这也没有任何意义。如果要数Reviews,就用item.Campaign.Reviews.Count()

标签: c# asp.net-mvc for-loop razor foreach


【解决方案1】:

如果您只想统计评论,只需使用 LINQ Count() 方法:

@{ int ReviewCount = item.Campaign.Reviews.Count(); }
@Html.Raw(ReviewCount)
@if (ReviewCount != 1) {
    @Html.Raw(" Reviews")
}
else {
    @Html.Raw(" Review")
}

另外,请成为DRY

【讨论】:

  • 谢谢!我很高兴你能理解我想要做什么。我仍在学习这些命令,因此非常感谢!它完全按照需要工作。