gpt4 book ai didi

c# - Linq 数据透视指标值到附加列和聚合数据

转载 作者:行者123 更新时间:2023-11-30 15:16:04 26 4
gpt4 key购买 nike

我正在尝试使用 Linq 进一步聚合我的数据。我有一张设计不当的学生表,其中包含不必要的重复项。我已经获取了数据,并且正在尝试将其汇总以便于阅读。现有数据结构如下:

| Course | Class  | Sex | Count |
---------------------------------
| Math | Junior | M | 20 |
| Math | Junior | F | 15 |
| Other | Other | M | 10 |
| Other | Other | F | 15 |

我正在尝试将以上内容转换为更简单的结构

| Course | Class  | Male| Female|
---------------------------------
| Math | Junior | 20 | 15 |
| Other | Other | 10 | 15 |

我使用 for 循环来获取不同的类(class)并按性别获取记录并将它们合并到一条记录中,但这并不是很有效。现在有没有人有办法通过 Linq 查询来实现这一点,我认为它可以由 Linq 处理。

最佳答案

您可以在 Linq 中通过按类(class)和类(class)分组一次性完成此操作(我使用了 ValueTuple,但匿名的类(class)分组键也可以)。

然后通过对男性和女性进行过滤和求和来获得总和:

var results = courseCounts
.GroupBy(cc => (cc.Course, cc.Class))
.Select(grp => new
{
Course = grp.Key.Course,
Class = grp.Key.Class,
Male = grp.Where(x => x.Sex == "M").Sum(x => x.Count),
Female = grp.Where(x => x.Sex == "F").Sum(x => x.Count)
});

(次要,但从更大数据集的性能角度来看,重复 .Where(x => x.Sex == "x") 两次效率有点低 - 我们例如可以先将数据键入 Grouping + Dictionary)

关于c# - Linq 数据透视指标值到附加列和聚合数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50643989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com