飞天发布时刻:2024年 Forrester 公有云平台Wave™评估报告解读 了解详情
写点什么

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

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

关注

评论

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

DDD实战(3):整体工作框架和全局需求分析

深清秋

DDD 软件架构 生鲜电商系统 3月月更

工作想法小计(4):2/28 - 3/4

非晓为骁

个人成长 工作 细节 工作想法

为什么说程序猿也要有产品思维

慕枫技术笔记

技术思维 内容合集 3月月更

几种如何判断环境是否连上网方法!推荐最后一种

华为云开发者联盟

网络 nodejs ipv4 上网 网络接口

[架构实战营]-千万级学生管理系统的考试试卷存储方案

邹玉麒

「架构实战营」

架构师训练营模块四作业

刘帅

强大的JSON.stringify,你真的会使用吗?

战场小包

JavaScript 前端 3月月更

ScrollView 和 RelativeLayout两个布局技巧

逆锋起笔

android xml 3月月更 android布局

千万学生管理系统之考试模块存储架构设计

随欣所遇

架构训练营5期

构建 Go 应用 docker 镜像的十八种姿势

万俊峰Kevin

微服务 web开发 go-zero docker image Go 语言

列存Delta表是个什么东东

华为云开发者联盟

存储 GaussDB(DWS) 列存表 delta表

千万级学生管理系统Redis存储架构

IT屠狗辈

redis 架构实战营

节省 58% IT 成本,调用函数计算超过 30 亿次,石墨文档的 Serverless 实践

阿里巴巴云原生

阿里云 云原生 函数计算 石墨文档 资源伸缩

【模块四】千万级学生管理系统考试试卷存储方案设计

yhjhero

#架构训练营

分布式数据库排序及优化

vivo互联网技术

分布式数据库

第四课作业

浪飞

前端实现word、excel、pdf、ppt、mp4、图片、文本等文件的预览

CRMEB

MySQL 15条常用的SQL知识(18/100)

hackstoic

MySQL

最佳实践:Kubernetes 集群中 DNS 故障的可观测性与根因诊断

阿里巴巴云原生

阿里云 Kubernetes 云原生 服务器 DNS

峰会报名|从金融行业技术选型,看 RocketMQ 如何应对严苛挑战

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列 峰会报名

千万级学生管理系统考试试卷存储方案

Geek_36cc7c

感受当下-人生意义的思索

李印

自我感悟 生活的意义

模块四

blazar

「架构实战营」

PHP 遇见 Serverless,帮你解决这些痛点!

阿里巴巴云原生

php 阿里云 Serverless 云原生

模块八-作业二

hunk

云原生训练营

在阿里巴巴,我们如何先于用户发现和定位 Kubernetes 集群问题?

阿里巴巴云原生

阿里云 云原生 分享 KubeProbe

【BBC learningenglish】with Tango

IT蜗壳-Tango

3月月更

CNCF Serverless工作流社区携手华为云FunctionGraph,开拓Serverless编排新时代

华为云开发者联盟

json Serverless 华为云 FunctionGraph CNCF Serverless Workflow

架构实战营:模块四作业

刘璐

Python二分查找,字符串模板,textwrap模块,每天写写Python自然就会了,每日Python第2天

梦想橡皮擦

3月月更

数据分析不能落地?快来围观,学会数据分析应用,一起升职加薪!

博文视点Broadview

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