代码之家  ›  专栏  ›  技术社区  ›  Huma Ali

使用LINQ[duplicate]的GroupBy和Count

  •  1
  • Huma Ali  · 技术社区  · 7 年前

    我有一个 班 具有以下属性的被调用组件:

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

    我有一个 :

    public List<Component> ComponentList;
    

    项目 其中包括:

    Internet   54896
    TV         24859
    Video      48596
    Internet   35969
    

    我有一本字典,我想用VerticalType作为键,Count作为值来填充它。所以我的字典应该是这样的:

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

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

    var results = lead.SelectedOffer.ComponentList.GroupBy(
         p => p.VerticalType,
         p => p.VerticalTypeCount,
         (key, g) => new { VerticalType = key, Count =  });
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Ousmane D.    7 年前

    要获取组中的计数,请使用 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() });