【问题标题】:Get Total Count of Unique Items of Generic List获取通用列表的唯一项总数
【发布时间】:2013-06-03 12:12:03
【问题描述】:

我整晚都在绞尽脑汁(再次)寻找列表中每组独特项目的总数。我能够获得唯一的列表项。但我似乎无法弄清楚如何获得每组独特物品的数量。请告诉我这是否有意义。下面是我的代码:

    List<string> categories = new List<string>();

    foreach (var item in Model)
    {
        categories.Add(item.Category);
    }
    IEnumerable<string> distinctCategories = categories.Distinct();                                                                      

        foreach (string category in distinctCategories)
        {
        <a href="http://localhost:62087/Items/SearchIndex?itemCategory=@category">@category @category.Count()</a>
        } 

如您所见,我在模型的“类别”属性 (Item.Category) 中为每个唯一项目显示了一个链接。当您在链接末尾看到类别计数时,它实际上显示了该类别中的字符数(例如“Rings”类别的数字 5)。但我真的希望这个数字代表类别“戒指”的次数,例如,在模型的类别属性中找到。

请帮忙

【问题讨论】:

    标签: asp.net-mvc linq entity-framework c#-4.0


    【解决方案1】:

    要获得计数,您需要使用GroupBy 而不是Distinct

    var distinctCategories =
        categories.GroupBy(x => x)
                  .Select(g => new { Name = g.Key, ItemsCount = g.Count() });
    foreach (var category in distinctCategories)
    {
        <a href="http://localhost:62087/Items/SearchIndex?itemCategory=@category.Name">@category.Name @category.ItemsCount</a>
    }
    

    【讨论】:

    • 您编写的代码给我一个错误:无法将方法组转换为非委托类型对象。有什么想法吗?
    • @iDevJunkie:请确保您拥有与我一样的代码。特别是不要错过g.Count() 上的括号。
    • 嗯,我复制粘贴了。刚刚又做了一次,效果很好。伙计,漂亮的作品!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多