【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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:441793
用户头像

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

关注

评论

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

前端必会面试题总结

loveX001

JavaScript

新项目为什么决定用 JDK 17了

古时的风筝

Java JVM jdk17

【论文推荐】TDSC2022 安全补丁识别最新的方案E-SPI

华为云开发者联盟

后端 开发 华为云 12 月 PK 榜

如何使用Towify在微信小程序中配置输入必填报错?

Towify

小程序 微信小程序 无代码 无代码微信小程序

Java7提供的Fork/Join框架实现高并发程序,你会使用吗

华为云开发者联盟

高并发 开发 华为云 12 月 PK 榜

分布式注册服务中心etcd在云原生引擎中的实践

京东科技开发者

分布式 云原生 etcd 集群 go语言

区块链+物联网,如何解决农产品溯源之痛?

旺链科技

区块链 物联网 产业区块链 农产品 12 月 PK 榜

软件测试 | 测试开发 | 一文搞定 Postman 接口自动化测试

测吧(北京)科技有限公司

前端一面必会react面试题(附答案)

beifeng1996

React

前端关于面试你可能需要收集的面试题

loveX001

JavaScript

陈世佳酿贾斯特里尼&布鲁克斯,优质葡萄酒连储藏都有秘诀

联营汇聚

数据可视化图表系列解析——折线图

Data 探险实验室

数据分析 可视化 数据可视化 可视化数据 折线图与饼图

跨平台应用开发进阶(二十八) :资源加载速度优化解决方案

No Silver Bullet

跨平台 12月月更 资源加载优化

好酒要有好工艺,贾斯特里尼&布鲁克斯,用心酿造每一滴酒

联营汇聚

ZBC成功上线PancakeSwap的糖浆池,并有望在不久上线Binance

小哈区块

先到先学!阿里新产Spring全家桶核心笔记,底层源码+应用全覆盖

程序员小毕

spring 源码 后端 架构师 java面试

HummerRisk V0.7.0:支持京东云、webhook、PDF下载等

HummerCloud

云安全 云原生安全

问:你是如何进行react状态管理方案选择的?

beifeng1996

React

问:React的useState和setState到底是同步还是异步呢?

beifeng1996

React

从输入URL到渲染的完整过程

loveX001

JavaScript

低碳机关先行,昆明引领分布式光伏新变革

Geek_2d6073

贾斯特里尼&布鲁克斯,葡萄酒中的天花板

联营汇聚

【观看直播有礼】第三届云原生实战峰会正式官宣启动

阿里巴巴云原生

阿里云 云原生 实战峰会

数据分析架构新变革?Doris Summit 2022 议程首公布!|即刻报名

SelectDB

Doris summit 峰会报名 大数据 开源 数据库·

重磅干货!一文读懂「企业级架构」

极狐GitLab

DevOps geo 高可用架构 ha 企业级代码架构

从URL输入到页面展现到底发生什么?

loveX001

JavaScript

实用指南:手把手搭建坚若磐石的DevSecOps框架

SEAL安全

DevSecOps 12 月 PK 榜 DevSecOps框架 实用指南

手把手教你一套完善且高效的k8s离线部署方案

京东科技开发者

Docker k8s ansible ulimit 云计算,

跨平台应用开发进阶(二十九) :uni-app 实现Android原生APP-云打包集成神策详细教程

No Silver Bullet

uni-app android 跨平台应用 云打包 12月月更

一文梳理HTTP、TCP、Socket和WebSocket的区别和联系

No Silver Bullet

TCP 网络协议 HTTP websocket 12月月更

社招前端一面必会react面试题集锦

beifeng1996

React

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