写点什么

LINQ 的分组聚合技术

  • 2008-01-07
  • 本文字数:558 字

    阅读完需:约 2 分钟

很大程度上来讲,LINQ 的工作方式很像 SQL。查询源定义、join、select 和 where 子句都是相当标准的,而 Group/By/Into 子句则正是我们这里要仔细说明的。SQL 总是返回矩阵式数据集,与它不同的是,LINQ 具备了返回层次化数据的能力,这也给它自己带来了更多新的挑战。

举一个例子,将客户按照所属 country 和 city 进行分组查询,在 SQL 中,可能会通过在客户端手动分组或者执行 1+N+(N*M)次查询来实现,一个查询用来获取所有的国家,一个查询用来获取每个国家的所有城市,然后再逐个查询出每个国家的每个城市下所有的客户列表。

而在 LINQ 中,它可以通过一个带有一系列子查询的查询语句一次性完成,当然,这也增加了查询的复杂度。Mitsu 演示如下:

<p>var q =<br></br> from c in db.Customers<br></br> group c by c.Country into g<br></br> select new { <br></br> g.Key, <br></br> Count = g.Count(), <br></br> SubGroups = from c in g <br></br> group c by c.City into g2<br></br> select g2};</p>

为说明 LINQ 框架的灵活性,Mitsu 将它简化到了仅一行:

<p>var result = customers.GroupByMany(c => c.Country, c => c.City);</p>

Mitsu 用一种能适用于任何 LINQ 查询的方式实现了它。你可以在他的博客上查看源码以及关于它是如何工作的解释文章。查看英文原文 LINQ Grouping Techniques

2008-01-07 23:442346
用户头像

发布了 90 篇内容, 共 17.2 次阅读, 收获喜欢 12 次。

关注

评论

发布
暂无评论
发现更多内容

恭喜 Kvrocks 加入 Apache 软件基金会孵化器

Kvrocks

redis 开源 apache 社区

691页,41个版块!终于有阿里大佬可以带我吃透Spring源码了

Java架构追梦

Java spring 后端开发

PingCode Flow技术架构揭秘

PingCode研发中心

WordPress 如何重置密码

海拥(haiyong.site)

5月月更

未来的神AIoT!全网第一份AIoT系统学习指南,限时开源

Java架构追梦

Java 后端开发 ALOT

双管齐下, 清华教授亲码JDK和HotSpot源码笔记,一次性学个明白

Java架构追梦

Java 后端开发

放弃保研和出国,投身基础软件,一位复旦学子的职业选择

TDengine

数据库 tdengine

Apache ShardingSphere 企业行|走进携程

SphereEx

Apache 数据库 ShardingSphere SphereEx 企业行

如何基于盘古开发框架开发Dubbo微服务网关

码农大熊

微服务架构 网关

使用小程序容器技术快速构建智能电视应用平台

Speedoooo

小程序 物联网 移动开发 小程序容器 智能电视

带派!真心被这份阿里大牛开源的“全彩版图解HTTP手册”折服了

Java架构追梦

Java 程序员 后端开发

阿里大牛两万字总结+40张图文详解,不信你还参透不了并发编程

Java架构追梦

高并发 java面试 后端开发

2019,不仅是"自由自在",更是AI领域不平凡的一年

Baihai IDP

人工智能 AI

Swift 首次调试断点慢的问题解法 | 优酷 Swift 实践

阿里巴巴终端技术

ios swift

看 Amazon 如何通过 Nitro System 构建技术优势

亚马逊云科技 (Amazon Web Services)

Builder 专栏

浅析分布式系统之体系结构 - 事务与隔离级别(多对象、多操作)上篇

snlfsnef

数据库 架构 设计原则 一致性 事务隔离

Kubernetes 中数据包的生命周期 -- 第 3 部分

Se7en

【多云管理】国内多云管理平台厂家名单汇总

行云管家

云计算 多云管理 多云 云管平台

Alibaba永远滴神!阿里顶级技术官500页网络协议手记,限时开源

Java架构追梦

Java 华为 网络协议 后端开发

【直播回顾】OpenHarmony知识赋能五期第三课——多媒体整体介绍

OpenHarmony开发者

直播 OpenHarmony 成长计划 多媒体 标准系统

阿里亿级并发册+机器学习算法+面试册+优化册+代码册 笔记!!!

Java架构追梦

Java 程序员 后端开发

【Python】此集合非彼集合

謓泽

5月月更

云图说|云数据库RDS跨区域备份

华为云开发者联盟

华为云 云数据库 备份 云数据库RDS 跨区域备份

【案例】锐明技术:灵活部署,实现会话质量和安全的双重保障

行云管家

运维 等保 IT运维 等保2.0

面向对象编程(OOP)

武师叔

5月月更

Alibaba最新神作!耗时182天肝出来1015页分布式全栈手册太香了

Java架构追梦

分布式 java面试 后端开发

2022年医疗+AI,将会如何蓄力发展?

易观分析

医疗AI

python进阶-装饰器

AIWeker

Python 人工智能 5月月更

LINQ的分组聚合技术_.NET_Jonathan Allen_InfoQ精选文章