写点什么

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

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

关注

评论

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

1688接口推荐:1688商品详情数据接口

tbapi

1688 1688API接口 1688商品详情数据接口 1688商品数据采集

基于 Sass 的架构之 redis多租户

智慧源点

跨境电商三大趋势

api开发

再聊对架构决策记录的一些思考

京东科技开发者

开源无代码 / 低代码平台 NocoBase 0.20:支持多数据源

NocoBase

开源 低代码 低代码开发 低代码平台 无代码平台

借助 Terraform 功能协调部署 CI/CD 流水线-Part 2

SEAL安全

运维 云原生 CI/CD Terraform

震惊:苹果手机电池栏“黑白无常”

京东科技开发者

告别过往,重获新生

少油少糖八分饱

村上春树 小说推荐 海边的卡夫卡

利用1688商品详情API:打造高效的电商解决方案

技术冰糖葫芦

API Explorer API 接口 API 策略 pinduoduo API

南开大学OpenHarmony技术俱乐部揭牌成立

科技热闻

CCE集群VPC网络模式下几种访问场景

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟

PostgreSQL数据库连接数设置的越大越好吗

张文平

数据库 postgresql 连接数 数据库配置

游戏行业需要堡垒机吗?用哪款堡垒机好?

行云管家

网络安全 游戏 数据安全 堡垒机

目前人工智能的发展,未来对人类的就业有那些影响?

算法的秘密

科技越发展普通人会越限制还是越free?

算法的秘密

MySQL 8.0.26版本升级32版本查询数据为空的跟踪

GreatSQL

为了跳槽或提升自己,你会先学习哪一门编程语言?

小齐写代码

华为云亮相LEAP科技展,携手沙特共创智能新高度

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟

HarmonyOS-安装篇(DevEco Studio)

京东科技开发者

淘系接口推荐:淘宝店铺所有商品数据接口

tbapi

淘宝API接口 淘宝店铺所有商品数据接口 淘宝商品数据采集

实时工业控制系统的创新整合:PLC4X与CnosDB的高效数据采集与存储

CnosDB

开源 时序数据库 tsdb CnosDB

Amazon SageMaker 机器学习之旅的助推器

亚马逊云科技 (Amazon Web Services)

GaussDB(DWS)集群通信:详解pooler连接池

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(DWS)

移动App开发常见的三种模式(原生应用、H5移动应用、混合模式应用)

天津汇柏科技有限公司

软件开发 APP开发 软件定制开发

电动车窗开关中MOS管的应用解析

芯动大师

汽车电子 芯片技术 MOS管

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