写点什么

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

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

关注

评论

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

模块七作业: 王者荣耀商城异地多活架构设计

凯博无线

王者荣耀商城异地多活架构设计

大眼喵

「架构实战营」

王者荣耀商城异地多活架构设计

dan629xy

【愚公系列】2022年06月 二十三种设计模式(二十)-状态模式(State Pattern)

愚公搬代码

6月月更

深入浅出 ODP(一):功能模块及特性详解

OceanBase 数据库

数据库 oceanbase

创建一个springboot服务就是这么简单

乌龟哥哥

6月月更

CommandPattern-命令模式

梁歪歪 ♚

设计模式

如何快速上手AIRIOT?

AIRIOT

物联网 低代码平台

程序员们,快把这款AI“魔法”做到手机相机里,求求了

最新动态

当我们进行性能优化,我们在优化什么(LightHouse优化实操)

刘悦的技术博客

性能优化 前端 优化 性能优化手册

【Go实现】实践GoF的23种设计模式:原型模式

元闰子

Go 设计模式 原型模式

OceanBase 源码解读(十五):Location Cache 模块浅析

OceanBase 数据库

数据库 oceanbase 源码解读

【动态规划入门篇】只需三步解决它

知心宝贝

算法 前端 动态规划 Leet Code 6月月更

InfoQ 极客传媒 15 周年庆征文 | 轻量级状态机COLA StateMachine保姆级入门教程

Zhendong

Java 架构设计 状态机 InfoQ极客传媒15周年庆

富滇银行完成数字化升级|OceanBase数据库助力布局分布式架构中台

OceanBase 数据库

分布式数据库 oceanbase

内存数据库和磁盘数据库哪个更强?

OceanBase 数据库

内存数据库 oceanbase 磁盘数据库

MPLS协议简述

穿过生命散发芬芳

6月月更 MPLS

ChainOfResponsibilityPattern-责任链模式

梁歪歪 ♚

设计模式

Vue框架学习笔记 每天学习----四

恒山其若陋兮

6月月更

IteratorPattern-迭代器模式

梁歪歪 ♚

设计模式

idea社区版和商业版有什么区别

源字节1号

软件开发

基于 RDMA 的分布式系统研究进展

OceanBase 数据库

RDMA

几经波折,InfluxDB的TSDB C位还能做多久?

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

OceanBase数据库荣获领先科技成果“新技术”奖

OceanBase 数据库

oceanbase 数博会

OceanBase 成为信通院首批可信开源社区、可信开源项目

OceanBase 数据库

开源 oceanbase 信通院

Oceanbase 读写分离方案探索与优化

OceanBase 数据库

分布式数据库 读写分离 oceanbase

聊聊 Sharding-Jdbc 的原理-初篇

Nick

MySQL 分库分表 中间件 ShardingJDBC 6月月更

万物并作,吾以观复|OceanBase 政企行业实践

OceanBase 数据库

数据库 oceanbase

后端解构复习(一)

卢卡多多

技术栈 6月月更

高性能API网关Kong介绍

天翼云开发者社区

通用池化框架GenericObjectPool性能测试

FunTester

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