报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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

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

关注

评论

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

Flink 运行架构详解

五分钟学大数据

flink 7月月更

这才是开发者神器正确的打开方式!

Jackpop

你读过的最好的 C++ 开源代码是什么?

Jackpop

PDF处理还收费?不可能!

Jackpop

kubernetes GPU的困境和破局

琦彦

人工智能 机器学习 gpu Kubernetes

简化理解:发布订阅

掘金安东尼

前端 设计模式 7月月更

Android如何保证service在后台不被kill

沃德

android 7月月更

kubernetes多网卡方案之Multus_CNI部署和基本使用

琦彦

Kubernetes cni 多网卡 multus

茅台冰淇淋“逆势”走红,跨界之意却并不在“卖雪糕”

易观分析

茅台

Kubernetes版本对接对象存储

琦彦

对象存储 pvc

LeetCode-70. 爬楼梯(java)

bug菌

Leet Code 7月月更

【媳妇当车模频道】汽车字体反爬一键解决,之家之家

梦想橡皮擦

Python 爬虫 7月月更

源码分析Sentry用户行为记录实现过程

南城FE

前端 7月月更 异常监控

深入浅出边缘云 | 2. 架构

俞凡

架构 边缘计算 网络 深入浅出边缘云

设计模式之禅(二)

青柚1943

设计模式 设计原则 策略模式 观察者模式 模板方法模式

C#入门系列(二十九) -- 预处理命令

陈言必行

7月月更

JavaScript中为什么“null==0“为false?? “null>=0“为true???

南极一块修炼千年的大冰块

7月月更

Istio1.12:安装和快速入门

琦彦

istio Sidecar 流量管理

STM32+ESP8266+MQTT协议连接腾讯物联网开发平台

DS小龙哥

7月月更

java零基础入门-异常、线程(下)

喵手

Java 7月月更

5年接触近百位老板,身为猎头的我,发现升职的秘密不过4个字

图灵教育

2022年IAA行业品类发展洞察系列报告·第二期

易观分析

IAA

iptables常用命令小清单

琦彦

Linux 网络 iptables

云原生(十二) | Kubernetes篇之Kubernetes基础入门

Lansonli

云原生 k8s 7月月更

算法题每日一练---第7天:美丽的2

知心宝贝

算法 前端 后端 7月月更

有关HashMap必须知道的原理

Java学术趴

7月月更

Kubectl_好用的命令行工具:oh-my-zsh_技巧和窍门

琦彦

Shell kubectl Oh My Zsh zsh

数据中台:始于阿里,兴于DaaS

雨果

数据中台 数字化转型 数据共享 DaaS数据即服务

怎么在VS Code中配置C/C++开发环境?

Jackpop

Reserved instances & Savings Plans

冯亮

云计算 DevOps AWS 成本优化

Android编码规范

沃德

android 程序员 7月月更

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