GroupBy and Count using LINQ
本问题已经有最佳答案,请猛点这里访问。
我有一个名为component的类,它具有以下属性:
1 2 3 4 5 | public class Component { public string VerticalType {get; set;} public string ProductCode {get; set;} } |
我有一个清单:
1 | public List<Component> ComponentList; |
并说在列表中包含以下项目:
1 2 3 4 | Internet 54896 TV 24859 Video 48596 Internet 35969 |
我有一本字典,我想用VerticalType作为键并作为值来填充它。所以我的字典应该是这样的:
1 2 3 | (Internet,2) (TV,1) (Video,1) |
我正在尝试这样的方法,但不知道如何计算。
1 2 3 4 | var results = lead.SelectedOffer.ComponentList.GroupBy( p => p.VerticalType, p => p.VerticalTypeCount, (key, g) => new { VerticalType = key, Count = }); |
要获得一组中的计数,可以使用
1 | Count = g.Count() |
另一个注意事项是,由于您只需要从
1 2 | lead.SelectedOffer.ComponentList.GroupBy(p => p.VerticalType) .ToDictionary(g => g.Key, g => g.Count()); |
或者,如果您希望坚持匿名类型的IEnumerable,那么您仍然不需要在示例代码中使用这种特定的
1 2 | lead.SelectedOffer.ComponentList.GroupBy(p => p.VerticalType) .Select(g => new { VerticalType = g.Key, Count = g.Count() }); |