写点什么

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

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

关注

评论

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

疫情降至,我只花了7天,经历三个步骤拿到了腾讯offer,springmvc面试题常问2020

Java 程序员 后端

百度、阿里、美团,java敏捷开发模式面试题

Java 程序员 后端

架构实战营- 模块二

瓜子葫芦侠

「架构实战营」

硬核!逛了5年的Github一口气把我收藏的JAVA开源项目分享给你

Java 程序员 后端

硬核!阿里内部这份《Java面试核心知识手册,面经解析

Java 程序员 后端

确定要面试问我JVM吗?我打算聊一个小时的!(1),linux驱动架构

Java 程序员 后端

看完这篇,面试再也不怕被问 Webpack 热更新,java原理及插件

Java 程序员 后端

看这篇就够了!RabbitMQ如何防止数据丢失,详细讲解,linux教程课后答案孟庆昌

Java 程序员 后端

知乎:怎么评价程序员35岁了还在撸代码?,java实用教程第五版电子书答案

Java 程序员 后端

linux中同时移动多种格式文件

入门小站

Linux

硬肝到秃头!Alibaba强推并发编程笔记我跪了,真的学到好多东西

Java 程序员 后端

疫情在家刷了几个月的面试题及算法,我终于拿到了字节跳动offer

Java 程序员 后端

疫情期间宅在家的这段时间,突然收到(余额宝,java架构师技术进阶路线图下载

Java 程序员 后端

看完这篇,别人的开源项目结构应该能看懂了,kafka入门与实践百度云

Java 程序员 后端

知乎头条。纯干货:深度认识Sharding-JDBC,mybatis连接数据库原理

Java 程序员 后端

男默女泪!阿里技术官的Docker+K8S手册(1),java研发工程师面试问题

Java 程序员 后端

男默女泪!阿里技术官的Docker+K8S手册,java开发视频直播

Java 程序员 后端

看完这篇文章,你对Redis持久化的迷惑就全解开了,超全面

Java 程序员 后端

真香现场!全网首发Spring5秘籍手册+知识导图,记得把每一次面试当做经验积累

Java 程序员 后端

硬核图解!断网了,还能ping通 127,高性能mysql笔记

Java 程序员 后端

用时半个月,终于把2020年各大公司的Java面试题精选整理成文档了

Java 程序员 后端

知乎万赞:Java程序员的悲哀竟然是,java编程思想百度云

Java 程序员 后端

架构实战营模块2课后作业

断水风春

架构实战营

看一遍就理解:动态规划详解,双非渣本Java四年磨一剑

Java 程序员 后端

用了这么多年分页PageHelper,你确定你真的会用吗?,mysql应用教程李辉答案

Java 程序员 后端

直击阿里“远程面试”现场,linux驱动开发入门与实战

Java 程序员 后端

真666!阿里资深架构师熬夜纯手写的238页微服务容器化开发实战笔记

Java 程序员 后端

真香!前阿里P8甩我一份内部SpringCloud笔记手册,竟然在Github上点击破百万

Java 程序员 后端

瞬间霸榜,收藏第一的“kafka学习笔记,java图片转视频

Java 程序员 后端

硬核解析,巧用案例学习jQuery框架三种事件绑定方式,最新阿里+头条+腾讯大厂Java笔试真题

Java 程序员 后端

文本随机打乱工具

入门小站

工具

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