使用LINQ的GroupBy和Count

时间:2018-12-24 20:27:09

标签: c# linq group-by count

我有一个名为Component的,具有以下属性:

listOfNames <- gsub("\"" ,"", listOfNames)

我有一个列表

public class Component
{
    public string VerticalType {get; set;}
    public string ProductCode {get; set;}
}

并说列表中有以下项目

public List<Component> ComponentList;

我有一个Dictionary,我想用VerticalType作为键并以Count作为值来填充它。所以我的字典看起来像这样:

Internet   54896
TV         24859
Video      48596
Internet   35969

我正在尝试类似的方法,但是不知道如何获得计数。

(Internet,2)
(TV,1)
(Video,1)

1 个答案:

答案 0 :(得分:2)

要获取组中的计数,请使用Count()方法:

Count = g.Count()

另一方面,由于您想要的只是从VerticalType到计数的映射,所以我建议您这样做:

lead.SelectedOffer.ComponentList.GroupBy(p => p.VerticalType)
                  .ToDictionary(g => g.Key, g => g.Count());

或者如果您想保留匿名类型的IEnumerable,那么您仍不需要在示例代码中使用的GroupBy的特定重载,而是此重载:

lead.SelectedOffer.ComponentList.GroupBy(p => p.VerticalType)
                  .Select(g => new { VerticalType = g.Key, Count = g.Count() });