首页 > 解决方案 > 聚合来自两个集合的数据

问题描述

我有一个关于 LINQ 和聚合数据的问题。我有两个 csv 文件,其中填充了我用来练习的虚拟数据。

第一个 csv 文件(因子)包含以下字段:

样本数据


第二个 csv 文件(Counties)包含以下字段:

  1. 邮政编码

样本数据

我正在尝试使用 LINQ 按县获得 FactorType 的平均值。我有一个查询,它按县返回每个 ZipCode 的 FactorType,代码和输出的屏幕截图如下。

var query =
            from county in countyRecords
            join factor in factorRecords on county.Zipcode equals factor.Zipcode
                into factorGroup
            orderby county.County
            select new CountyFactor
            {
                cf_county = county,
                cf_factors = factorGroup
            } into result
            group result by result.cf_county.County;

在此处输入图像描述

我的目标是获得每种因素类型的平均值,例如:

县名

我的想法是获取第一个查询的结果并在第二个查询中使用它们来获得这些结果,但我不知道该怎么做。下面的代码是据我所知,但不知道如何完成它。

var query2 =
            from data in query
            group data by data.Key into averageGroup
            select new
            {
                average = averageGroup.Average()
            }

感谢您花时间看这个!

标签: c#linq

解决方案


countyRecords.Join( FactorRecords, c => c.ZipCode, f => f.ZipCode, (c, f) => new { County = c, Factor = f }).GroupBy(Factor.Type).Select( x=> new { x.key, x.Sum(Average) }).ToList( );

我不明白你是否需要所有平均值的总和。将 sum 替换为 max with 获得最大平均值, min 为最小平均值, Average 为它们的平均值。


推荐阅读