c# - 在 C# 中对数据进行分组和进行聚合计算

标签 c# .net

我在 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

我想做的是计算这些类型的平均项目,从而产生如下结果:

Cat  | Type | Items
--------------------
 A   |  P   |  2
 A   |  Q   |  4.5
 A   |  R   |  2
 B   |  P   |  5.5
 B   |  Q   |  3
 B   |  R   |  5

如您所见,平均项目是针对这些类型计算的 最好的方法是什么?

最佳答案

假设输入是在一个名为 list 的变量中提供的类型 IEnumerable<Blah> (例如,包含数据库查询结果、List<Blah>、数组等),以及 Blah是一个具有名为 Cat 的字段或属性的类, TypeItems :

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) })

关于c# - 在 C# 中对数据进行分组和进行聚合计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4686293/

相关文章:

c# - 对 Type.GetMethod() 的重复调用是否会在内部缓存?

c# - .NET 中的类插件架构

c# - Datagrid 按需卸载

c# - 在RavenDB中,如何查询文档中嵌套的 "objects"?

.net - 自定义交易范围

c# - .NET 可枚举联合/联接组合

.net - 如何检查是否正在调用 Global.asax 文件

c# - 存储库模式——根据类型查找存储库

c# - FakeItEasy 为后续调用模拟方法返回不同的值

c# - Windows Phone 8.1 中的警报代码