使用 LINQ 获取分组值总和的平均值

Get average of sum of grouped values with LINQ

我有一个 IEnumerable,其中包含字段 Name(string) 和 Amount(ulong)。 我想获得一个 LINQ 查询以按名称对这些元素进行分组,然后获取它们的总和以及该总和的平均值。

为了得到分组元素的总和,我做了这样的事情

collection.GroupBy(x => x.Name).Select(x => new { Key = x.Key, Sum = x.Sum(e => Int32.Parse(e.Amount.ToString()))});

它工作得很好,但是现在有没有一种方法可以在不制作单独的 LINQ 或方法或其他任何东西的情况下获得每个组的平均值?

我试过几种方法,但 none 是正确的。我做的最好的就是获得每个金额的平均值:/

您应该可以将另一个成员添加到匿名类型以 return 平均值,类似于您 return 求和的方式。

collection.GroupBy(x => x.Name)
    .Select(x => new { 
        Key = x.Key,
        Sum = x.Sum(e => Int32.Parse(e.Amount.ToString()),
        Avg = x.Average(e => Int32.Parse(e.Amount.ToString())
    });