Linq 按两个字段进行分组并求平均值

2023-12-24

我有以下 C# 模型:

public class RawData
{
    public int questionnaireId { get; set; }

    public int coachNodeId { get; set; }

    public int questionnaireNumber { get; set; }

    public float score { get; set; }
}

public class AveragedData
{
    public int coachNodeId { get; set; }

    public int questionnaireNumber { get; set; }

    public float averageScore { get; set; }
}

我有一个 API 端点,它从数据库返回数据,映射为List<RawData>。值是这样的:

questionnaireId | coachNodeId | questionnaireNumber | score
1               | 30          | 1                   | 2
2               | 40          | 1                   | 3
3               | 30          | 2                   | 1
4               | 30          | 3                   | 4
5               | 40          | 2                   | 5
6               | 40          | 1                   | 5
7               | 30          | 1                   | 1
8               | 30          | 1                   | 2
9               | 40          | 1                   | 2
10              | 30          | 2                   | 4

我现在需要做的,在 LINQ 查询中,求平均值score值分组依据coachNodeId and questionnaireNumber并返回类型列表AveragedData.

通过对上面的示例数据进行平均和分组而返回的值应该是:

coachNodeId | questionnaireNumber | averageScore
30          | 1                   | 1.66666666          (calculated by: (2 + 1 + 2) / 3))
30          | 2                   | 2.5                 (calculated by: (1 + 4) / 2))
30          | 3                   | 4                   (calculated by: (4 / 1))
40          | 1                   | 3.33333333          (calculated by: (3 + 5 + 2) / 3))
40          | 2                   | 5                   (calculated by: (5 / 1))

我对 LINQ 没有经验,所以正在努力组合一个按两者分组的查询coachNodeId and questionnaireNumber并对分数进行平均,返回 type 的对象List<AveragedData>。谁能建议如何实现这一目标?

非常感谢。


假设你有一个List<RawData> called list,你想要:

var results = list.GroupBy(x => new
                                {
                                     questionnaire = x.questionnaireId,
                                     coach = x.coachNodeId
                                })
                  .Select(x => new AveragedData
                                {
                                     coachNodeId = x.Key.coach,
                                     questionnaireNumber = x.Key.questionnaire,
                                     averageScore = x.Average(xx => xx.score)
                                })
                  .ToList();

进行分组,然后使用Select使用 LINQ 将数据投影到您的类型Average以及。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linq 按两个字段进行分组并求平均值 的相关文章

随机推荐

  • Funq 在 ServiceStack 中的使用

    我怎样才能访问Container实例脱离控制器 我必须使用Container Resolve在我的课堂上 但我如何访问Container实例 是单例吗 我可以用吗new Container 或者有没有类似的链条Funq StaticCont
  • 如何将不在 highcharts 中 x 轴和 y 轴上的值传递给工具提示

    我需要在工具提示上显示其他值 名称 计数和另一个值 android 我在一个Example https stackoverflow com questions 11294326 highcharts pass multiple values
  • 如何在golang和mongodb中通过id查找

    我需要使用 ObjectIdHex 获取值并进行更新并查看结果 我正在使用 mongodb 和 golang 但是以下代码无法按预期工作 package main import fmt gopkg in mgo v2 gopkg in mg
  • R - 使用 dplyr 根据每列的分位数过滤每列

    给定一个数据框 我想使用每列的分位数来过滤每列 我更喜欢使用 dplyr tidyverse 来完成此任务 set seed 23 df lt data frame x1 runif 10 0 100 x2 runif 10 0 100 x
  • UIViewController:extendLayoutInincludesOpaqueBars 和滚动视图偏移

    我的应用程序的视图层次结构非常简单 UINavigationController包含一个UITableViewController 导航控制器的导航栏是不透明的 这会导致导航转换期间表视图出现一些奇怪的插入行为 如下所示 为了解决这个问题
  • Db2 从 jdbc 合并动态值

    我想使用 db2 merge 语句将其作为来自 jdbc 的语句提交 我处于以下场景 我正在使用专有的持久层 并且正在处理一个实体 我不知道它是否已经持久存在 并且我想使用合并语句来插入或更新数据库上的行 是否可以 假设我正在处理桌子peo
  • PHP 本周的工作日,为什么 date() 和 strtotime 取下周?

    我使用以下代码来获取工作日的 Y m d 格式 monday date Y m d strtotime Monday tuesday date Y m d strtotime Tuesday wednesday date Y m d str
  • 如何编写基于类的 Django 验证器?

    我正在使用 Django 1 8 The 有关编写验证器的文档 https docs djangoproject com en 1 8 ref validators writing validators有一个基于函数的验证器的示例 它还说明
  • Java 杀死或终止线程

    大家好 基本上 当用户按下 终止 按钮时 我需要终止或停止正在运行的线程 该线程循环遍历数组列表并在 JTextArea 上显示每个事件 要求是当用户按下 终止 按钮时 我需要终止正在运行的线程 同时向数组列表添加一个新的 终止 事件 并让
  • 如何扩展 Pydantic 对象并更改某些字段的类型?

    有两个类似的 pydantic 对象 唯一的区别是有些字段是可选的 如何只定义一个对象中的字段并扩展到另一个对象中 class ProjectCreateObject BaseModel project id str project nam
  • 如何让 JOOQ 在 IN 子句中使用数组

    我想要JOOQ生成 in 并将列表绑定为数组参数 Postgres 我的代码看起来像 where Tables TABLE FIELD in idsList 我怎样才能做到这一点 为什么默认情况下不这样做 因为它比字符串的生成 和由 PG
  • 如何向 PHP 添加证书颁发机构,以便 file() 函数信任其签名的证书?

    我需要打开由私人公司的证书颁发机构签名的远程资源 目前 PHP 不会打开资源 因为它不信任证书签名者 我知道您可以使用流上下文对象执行证书 但我正在寻找一种方法来为 PHP 提供新证书颁发机构的公钥并拥有file 和类似的方法信任由该机构签
  • 如何从完整字符串 iOS swift 中找到字符串的多个 NSRange

    let fullString Hello world there are string 07 continents and string 195 countries let range NSMakeRange 24 2 NSMakeRang
  • Android NDK 的 Netlink 实现

    我有一个类似任务的要求 如中提到的这个链接 https kristrev github io 2013 07 26 passive monitoring of sockets on linux Android 中套接字的被动监控 一种方法是
  • Android Kotlin - 如何扩展 ConstraintLayout?

    我希望我的 ConstaintLayout 带有额外的附加属性 但我在扩展它时遇到了麻烦 更准确地说 我无法将正确的构造函数放入 class myCL ConstraintLayout 为了确保您的行为不会出现任何怪癖 您应该像这样实现它
  • “size”和“length”方法有什么区别

    当我跑的时候size and length在字符串上 它们返回相同的值 akash size gt 5 akash length gt 5 这两种方法有什么区别 Summary 在 Ruby 中 方法可以被重写 因此有些类中的多个方法会产生
  • 十六进制或二进制数中的数字之前是否允许使用数字分隔符?

    C 14 将数字分隔符的概念引入到文字中 大致如下 3 141 592 653 589 现在这是一个great具有可读代码的功能 但我想知道它是否允许引号beforea 的数字部分0x 0b 类型文字 在我看来 这 unsigned int
  • ffmpeg 使用什么格式/协议进行“原始”输出?

    给定一个命令行ffmpeg f lavfi i sine frequency 1000 duration 5 ar 8000 c a FOO pipe 1 ffmpeg 可能会抱怨它 无法找到合适的输出格式 对于某些编解码器 ffmpeg
  • .NET 创建新的调度程序

    我正在尝试使用调度程序创建第二个线程 以便我可以让主调度程序 用于 UI 完全无压力 并且让 UI 不断响应 现在 我可以为每个子线程 或 C 中的 void 创建多个线程 但我是否有可能创建一个新线程并获取它的调度程序 然后调用它 这就是
  • Linq 按两个字段进行分组并求平均值

    我有以下 C 模型 public class RawData public int questionnaireId get set public int coachNodeId get set public int questionnair