AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

当心!软件推广瞄准Bing搜索 月访问量已超百万

火绒安全

搜索引擎 推广

前端培训出来的容易找工作吗

小谷哥

OPPO 引力计划全方位升级,与开发者共建折叠屏上繁荣生态

极客天地

微服务是开发架构对三高场景的妥协吗?

NoGirlfriendDeFoundException

架构 微服务 单体架构 云平台

使用ESLint+Prettier统一Vue3项目代码风格

汪小成

10月月更

Apache Doris 1.1.3 版本正式发布!|版本通告

SelectDB

数据库 大数据 开源 数据分析 Doris

vue实战-完全掌握Vue自定义指令

yyds2026

Vue

React-Hook最佳实践

xiaofeng

React

Redis 底层数据结构说明

water

区块链链游项目系统开发程序方案(Demo)

I8O28578624

Vue 中为什么要有nextTick

华为云开发者联盟

Vue 前端 DOM 华为云 企业号十月 PK 榜

彻底搞懂Vue虚拟Dom和diff算法

yyds2026

Vue

vue实战中的一些小技巧

yyds2026

Vue

React-hooks+TypeScript最佳实战

xiaofeng

React

华为云GaussDB数据库荣获国际CC EAL4+级别认证

华为云开发者联盟

数据库 华为云 企业号十月 PK 榜

2022-10微软漏洞通告

火绒安全

安全漏洞

Vue组件入门(七)v-model与自定义事件

Augus

Vue3 10月月更

数仓性能调优:如何进行函数下推

华为云开发者联盟

数据库 后端 华为云 函数 企业号十月 PK 榜

前端培训学习就业前景怎么样?

小谷哥

云管平台常见问题汇总解答-行云管家

行云管家

云计算 企业上云 云管理

如何实现一个 Go 语言的字符串切片反转函数

宇宙之一粟

数据结构与算法 Go 语言 反转字符串 10月月更

实践GoF的设计模式:代理模式

华为云开发者联盟

Go 开发 华为云 企业号十月 PK 榜

java的IO模型分类和特点

zarmnosaj

10月月更

git branch --set-upstream-to=origin/master

源字节1号

软件开发

前端培训学习后能做多久?

小谷哥

户外led显示屏如何防火

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

过等保流程简单说明-行云管家

行云管家

网络安全 等级保护 过等保 等保2.0

进销存软件哪个简单好用?

优秀

进销存管理系统 进销存系统

一文读懂TDengine3.0中的事务机制

TDengine

数据库 tdengine 时序数据库

2022前端培训学习前景怎么样?

小谷哥

议程剧透!1个主论坛4场Workshop,龙蜥操作系统峰会盛大来袭 | 2022 云栖大会

OpenAnolis小助手

开源 报名 云栖大会 论坛 龙蜥操作系统峰会

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