我想对分组项目求和。 我希望保持简单的LINQ语法。
我需要在代码中修复,以获得关键的项目。 我试着像“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
返回igrouping
的IEnumerable
,它实现IEnumerable
,因此您只需执行G.count()
:
var groups = groupedOrd
.Select(g => new Group { GroupId = g.Key, Count = g.Count() } )
.ToList();
由于某种原因,您的group.count
属性也是一个字符串,因此您需要将其更改为int
或执行g.count().toString()
您可以使用groupby
的重载,它接受结果选择器func
var groups = orders.GroupBy(o => o.Group,
(group, results) => new Group { GroupId = group, Count = results.Count().ToString() })
.ToList();
在您的示例中,结果选择器将是func
,您将为每个组传递带有组键的string
,order
的IEnumerable
,并返回带有计算出的计数
的group
新实例