码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 在C#中通过groupby组织List对象成为多级别Json数据


    在C#中通过groupby组织List对象成为多级别Json数据

    也可以说,把一个表的结果集,转换为类似主子表的结果集然后生成Json

    例如,一个表或者一个数据库操作返回的结果集:

    IDNameGenresth.
    1The BeatlesRock☆☆☆
    2The Rolling StonesRock☆☆☆
    3Miles DaviesJazz☆☆☆
    4Stan GetzJazz☆☆☆

    想要转化为:

    1. {
    2. "Data": [
    3. {
    4. "Genre": "Rock",
    5. "Musicians": [
    6. {
    7. "Name": "The Beatles",
    8. "sth.": "",
    9. "ID": 1
    10. },
    11. {
    12. "Name": "The Rolling Stones",
    13. "sth.": "",
    14. "ID": 2
    15. }
    16. ]
    17. },
    18. {
    19. "Genre": "Jazz",
    20. "Musicians": [
    21. {
    22. "Name": "Miles Davies",
    23. "sth.": "",
    24. "ID": 33
    25. },
    26. {
    27. "Name": "Stan Getz",
    28. "sth.": "",
    29. "ID": 4
    30. }
    31. ]
    32. }
    33. ]
    34. }

    则可以使用List的LINQ完成,类似var v = list..GroupBy(g1 => new { g1.DEPTNAME, g1.DEPT_ID, g1.CLINICNAME }).Select(s1 => new { s1.Key.DEPTNAME, s1.Key.DEPT_ID, s1.Key.CLINICNAME, SCHEDULES = s1.GroupBy(g2 => g2.SCHEDULEDATE).Select(s2 => new { SCHEDULEDATE = Convert.ToDateTime(s2.Key).ToString("yyyy-MM-dd"), REGISTRATIONRESOURCES = s2.GroupBy(g3 => g3.DR_ID).Select(s3 => new { REGISTRATIONTYPE = s3.Select(e1 => e1.REGISTRATIONTYPE).First(), DOCTORID = s3.Select(e1 => e1.DR_ID).First(), DOCTORNAME = s3.Select(e1 => e1.DOCTORNAME).First(), PERIOD = s3.Select(e1 => e1.PERIOD).First(), FREENUMBER = s3.Select(e1 => e1.TOTALNUMBER).First(), PIPELINE = s3.Select(e1 => e1.PIPELINE).First() }).OrderBy(o1 => new { o1.DOCTORID, o1.REGISTRATIONTYPE }) }).OrderBy(o2 => o2.SCHEDULEDATE) }).First();

    v.ToJson……

    注:

    select:组成新对象。

    * 可以调用groupby的key值(如果是一个就直接用,如果是多个,就要key.someField)

    * 可以调用排序后的list中的内容,通过first来取第一条值。不用first的话,在json中值是一个数组类似于"key":[{"value":1}],加first的话,可以返回"key":1

    groupby:可以by一个字段,key直接调用,可以by一个new的对象,多个字段。

    sort:排序

    first:可以用于控制json中格式的细节。

  • 相关阅读:
    一文入门 HTTP 协议
    pandas教程:Essential Functionality 索引 过滤 映射 排序
    物联网AI MicroPython传感器学习 之 DRV8833电机驱动模块
    watch 和 watchEffect
    2023华为杯数学建模D题第三问-碳排放路径优化(能源消费结构调整的多目标优化模型构建详细过程+模型假设(可复制))
    测试平台系列(97) 完善执行case部分
    量子密钥分发网络方案研究
    JavaScript性能优化:实战攻略
    深度剖析倍增算法求解最近公共祖先(LCA)的细枝末节
    sql引用
  • 原文地址:https://blog.csdn.net/pinkPumpkins/article/details/139976790
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号