10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

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

关注

评论

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

音视频传输协议众多, 5G时代不同业务应该如何选择?

华为云开发者联盟

5G 音视频 直播 流媒体

西少爷肉夹馍的股权纠纷 | 视频号28天(22)

赵新龙

28天写作

网站自动化任务脚本

Kylin

七日更

碎碎念之「程序员的时间都花在了哪?」

Justin

设计原则 代码规范 28天写作 技术债

企业级低代码平台的选型和建设思考

李小腾

Serverless Kubernetes:理想,现实与未来

阿里巴巴云原生

Serverless 容器 运维 云原生 k8s

【JS】预编译

德育处主任

JavaScript 大前端 js 28天写作

扎根CNCF社区贡献五年是怎样的体验?听听华为云原生开源团队的负责人怎么说

华为云开发者联盟

容器 Volcano cncf kubeedge 代码开发

技术赋能教育,浅谈教育机构转型的制胜关键

华为云开发者联盟

音视频 在线教育

java中的类和object,其实没那么难~

田维常

类集

大数据丨ClickHouse在京东能源管理平台的实践

京东科技开发者

数据库 大数据

15道类和对象面试题,快看看自己会几道

田维常

类集

LiteOS调测利器:backtrace函数原理知多少

华为云开发者联盟

架构 内存 函数 LiteOS backtrace

个人web分享92道JavaScript面试题附加回答

我是哪吒

程序员 面试 大前端 程序媛

太牛了!美团Android开发工程师岗位职能要求,大厂面试题汇总

欢喜学安卓

android 程序员 面试 移动开发

Invalid bound statement (not found)

任广印

Java MyBatisPlus

低代码:Microsoft Power Platform

lidaobing

低代码 28天写作 Power Platform

HTTPS实现原理

架构精进之路

https 七日更 28天写作

宅米网技术架构演进分析

Andy

凝聚人心并不难,小诀窍让团队跟你一条心

一笑

管理 激励 28天写作

云算力挖矿系统开发app,矿机租赁交易平台搭建

v16629866266

666666666666666666666

Paul

大数据

顺利拿到OPPO公司Android架构师offer,Android跨进程通信导论,全套教学资料

欢喜学安卓

android 程序员 面试 移动开发

从设计模式理解Vue响应式(多图警告)

coolFish(呔呆)

JavaScript vue.js 响应式 大前端 设计模式

阿里巴巴管理三板斧

Ian哥

28天写作

我的算法学习之路

熊斌

学习方法 算法 28天写作

微服务转型系列1:农商行数字化转型的烦恼

BoCloud博云

微服务 银行数字化转型 API 服务治理

重温亮剑-感悟

superman

一文带你解读Volcano架构设计与原理

华为云开发者联盟

架构 Kubernetes 负载 Volcano 集群

个人隐私后续

张老蔫

28天写作

“大禹针”在北江大堤上线,浪潮助力广东水利新基建落地

新基建

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