简体   繁体   English

C# LINQ - 分组

[英]C# LINQ - Group by

I would like to Sum grouped items.我想对分组项目求和。 I would like to do keep simple LINQ syntax.我想保持简单的 LINQ 语法。

What I need to fix in the code to get items for key.我需要在代码中修复以获取密钥项目。 I am trying like "g[g.Key].Count()", which doesn't work.我正在尝试像“g[g.Key].Count()”,但它不起作用。

public class Order
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Group { get; set; }
}

public class Group
{
    public string GroupId { get; set; }
    public string Count { get; set; }
}     


**var groupedOrd = orders.GroupBy(f => f.Group);**
List<Group> groups = new List<Group>();
foreach(var g in groupedOrd)
{
   groups.Add(new Group() { GroupId = g.Key, Count = g[g.Key].Count() });
}

GroupBy returns IEnumerable of IGrouping<TKey,TElement> which implements IEnumerable<T> so you can just do g.Count() : GroupBy返回IGrouping<TKey,TElement>IEnumerable ,它实现了IEnumerable<T>所以你可以只做g.Count()

var groups  = groupedOrd
    .Select(g => new Group { GroupId = g.Key, Count = g.Count() } )
    .ToList();

Also your Group.Count property is a string for some reason, so you will need to change it to int or do g.Count().ToString()由于某种原因,您的Group.Count属性也是一个字符串,因此您需要将其更改为int或执行g.Count().ToString()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM