在 Razor , Umbraco 中计算数组中相同值的项目数

加亚特里·莫汉

我有一系列记录

Model.Categories = ["apple", "banana", "apple", "orange"]

从这个数组中,我正在一一显示记录

 @foreach (var category in Model.Categories)
            {
                <a href="@Url.ArticulateCategoryUrl(Model, category)">@category</a>                   
            }

所以这当前显示两次苹果记录,但我想像这样显示单次计数

apple -(2)
banana
orange

像这样可以帮助我在 Razor 上解决这个问题吗?

特里纳德

为此,我们需要在模型中创建方法,它将返回类别及其出现的字典。请找到以下可用于返回字典的方法。

public Dictionary<string,int> CountArray()
    {
        Dictionary<string, int> countArr = new Dictionary<string, int>();

        foreach (var category in Categories)
        {
            if(countArr.ContainsKey(category))
            {
                countArr[category] = countArr[category] + 1;
            }
            else
            {
                countArr[category] = 1;
            }
        }
        return countArr;
    }

现在在 cshtml 文件中创建一个变量并分配这个从模型返回的值。在 foreach 循环中使用此变量。我想这会帮助你解决你的问题。

我真的不建议这种方法。但是当您需要帮助时,请找到 Razor 代码。

@{ Dictionary<string, int> countarry = new Dictionary<string, int>();}
@foreach (var category in Model.Categories)
{
    if (countarry.ContainsKey(category))
    {
        countarry[category] = countarry[category] + 1;
    }
    else
    {
        countarry[category] = 1;
    }
}
@foreach (var categoryName in countarry.Keys)
            {
if(countarry[categoryName] > 1)
        <a href="@Url.ArticulateCategoryUrl(Model, categoryName)">@categoryName - (@countarry[categoryName])</a>
else
<a href="@Url.ArticulateCategoryUrl(Model, categoryName)">@categoryName</a>
    }

我希望这是你所期待的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章