在C#中对数据进行分组并进行聚合计算

fla*_*e11 5 .net c#

List<object>object包含的地方有这样的东西Cat,TypeItems.

Cat  | Type | Items
--------------------
 A   |  P   |  3
 A   |  Q   |  4
 A   |  R   |  2
 A   |  P   |  1
 A   |  Q   |  5
 B   |  P   |  2
 B   |  Q   |  1
 B   |  R   |  3
 B   |  P   |  9
Run Code Online (Sandbox Code Playgroud)

我想要做的是计算类型的平均项,所以产生这样的东西:

Cat  | Type | Items
--------------------
 A   |  P   |  2
 A   |  Q   |  4.5
 A   |  R   |  2
 B   |  P   |  5.5
 B   |  Q   |  3
 B   |  R   |  5
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,平均项目是针对类型计算的,这是最好的方法吗?

Tim*_*mwi 7

假设输入是在一个名为listtype 的变量中提供的IEnumerable<Blah>(例如,包含数据库查询结果,a List<Blah>,数组等等),并且这Blah是一个带有字段或属性的类Cat,Type并且Items:

var result = list.GroupBy(entry => new { entry.Cat, entry.Type })
                 .Select(group => new { group.Key.Cat, group.Key.Type,
                                        Items = group.Average(e => e.Items) })
Run Code Online (Sandbox Code Playgroud)