C# LINQ - 分组依据

Pro*_*Ask -1 c# linq performance

我想对分组的项目求和。我想保持简单的 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() });
}
Run Code Online (Sandbox Code Playgroud)

Gur*_*ron 5

GroupBy其实现的回报IEnumerable,所以你可以这样做:IGrouping<TKey,TElement>IEnumerable<T>g.Count()

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

此外,Group.Count由于某种原因,您的属性是一个字符串,因此您需要将其更改为int或执行g.Count().ToString()

  • 从技术上讲,“GroupBy”的结果是“IEnumerable&lt;IGrouping&lt;TKey, TElement&gt;&gt;”,“IGrouping&lt;TKey, TElement&gt;”是“IEnuemrable&lt;TElement&gt;”,这就是为什么您可以执行“g.Count()” 。 (2认同)