获取通用列表的唯一项的总数

时间:2013-06-03 12:12:04

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

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

    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>
        } 

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

请帮忙

1 个答案:

答案 0 :(得分:3)

要计算,您需要使用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>
}