聚合来自两个集合的数据

我有一个关于 LINQ 和聚合数据的问题。我有两个 csv 文件,里面装满了我用来练习的虚拟数据。

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

  • 邮政编码

  • 因子类型

  • 因子值

样本数据

  • 31513,Type1,0.619046413

  • 31515,Type1,0.62013599

  • 31563,Type1,0.912988865

  • 31513,Type2,0.619046413

  • 31515,Type2,0.62013599

  • 31563,Type2,0.912988865

  • 31513,Type3,0.619046413

  • 31515,Type3,0.62013599

  • 31563,Type3,0.912988865


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

  1. 邮政编码

样本数据

  • 31513,应用

  • 31515,应用

  • 31563,应用

  • 31624,阿特金森

  • 31642,阿特金森

  • 31650,阿特金森

  • 31510,培根

  • 39870,贝克

  • 31034,鲍德温

  • 31059,鲍德温

  • 31061,鲍德温

  • 31062,鲍德温

我正在尝试使用 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;

http://img.mukewang.com/6122005800012ddc07961228.jpg

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

县名

  • 平均类型 1

  • 平均类型2

  • 平均类型3

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

var query2 =

            from data in query

            group data by data.Key into averageGroup

            select new

            {

                average = averageGroup.Average()

            }

感谢您花时间看这个!


呼啦一阵风
浏览 186回答 2
2回答

幕布斯6054654

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( );我不明白你是否需要所有平均值的总和。用 max 替换 sum 以获得最大平均值,最小值为最小平均值,平均值为它们的平均值。
打开App,查看更多内容
随时随地看视频慕课网APP