Zip, Join, GroupJoin
Zip
合并兩個序列,產生一個新的對象序列,但連接方式是一对一的(即序列1和第一项连接序列2的第一项),所以最终结果会在较短的序列处终止。
Zip在這裏不是壓縮的意思,而是拉鏈,意爲連接兩個序列
Person magnus = new Person { Name = "Hedlund, Magnus" };
Person terry = new Person { Name = "Adams, Terry" };
Person charlotte = new Person { Name = "Weiss, Charlotte" };
Pet barley = new Pet { Name = "Barley", Owner = terry };
Pet boots = new Pet { Name = "Boots", Owner = terry };
Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte };
Pet daisy = new Pet { Name = "Daisy", Owner = magnus };
List<Person> people = new List<Person> { magnus, terry, charlotte };
List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy };
var query = people.Zip(pets, (person, pet) => new { OwnerName = person.Name, Pet = pet.Name });
结果如下:
Hedlund, Magnus - Barley
Adams, Terry - Boots
Weiss, Charlotte - Whiskers
Join
合并兩個序列,產生一個新的對象序列,相當於内連接
var query = people.Join(pets,
person => person,
pet => pet.Owner,
(person, pet) => new { OwnerName = person.Name, Pet = pet.Name });
query = from person in people
join pet in pets on person equals pet.Owner
select new { OwnerName = person.Name, Pet = pet.Name };
結果如下:
Hedlund, Magnus - Daisy
Adams, Terry - Barley
Adams, Terry - Boots
Weiss, Charlotte - Whiskers
GroupJoin
合并兩個序列,產生一個分層的對象序列,序列中的每個元素都對應一個列表,這個方法在传统的关系数据库术语中没有直接的等效方法
var query = people.GroupJoin(pets,
person => person,
pet => pet.Owner,
(person, petCollection) =>
new
{
OwnerName = person.Name,
Pets = petCollection.Select(pet => pet.Name)
});
query = from person in people
join pet in pets on person equals pet.Owner into petCollection //其中petCollection是一個IEnumerable<Pet>
select new
{
OwnerName = person.Name,
Pets = petCollection.Select(pet => pet.Name)
};
結果如下:
> Hedlund, Magnus:
Daisy
> Adams, Terry:
Barley
Boots
> Weiss, Charlotte:
Whiskers
Zip, Join, GroupJoin的更多相关文章
- EntityFramework查询--联合查询(Join,GroupJoin)
首先我们先看一下Join public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(this ...
- 转:EntityFramework查询--联合查询(Join,GroupJoin)
首先我们先看一下Join public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(this ...
- 《C#高级编程》学习总结之LINQ
一.标准的查询操作符 标准查询操作符 说明 Where OfType<TResult> 筛选操作符定义了返回元素的条件. Select SelectMany 投射操作符用于把对象转换为另一 ...
- Linq to Objects for Java 发布 1.0.1 版本
现在 java 支持 linq 啦.比原生 stream api 更好用,功能更强大.现已发布 version 1.0.1 地址: https://github.com/timandy/linq. A ...
- Rx = Observables(响应) + LINQ(声明式语言) + Schedulers(异步)
Reactive = Observables(响应)+ Schedulers(异步). Extensions = LINQ(语言集成查询) LINQ: The Operators of Reactiv ...
- RxJava 1.x 笔记:组合型操作符
最近去检查眼睛,发现度数又涨了,唉,各位猿多注意保护自己的眼睛吧! 前面学了 RxJava 的三种关键操作符: 创建型操作符 过滤型操作符 变换型操作符 读完本文你将了解第四种(组合型操作符): 组合 ...
- Threading in C# 5
Part 5: Parallel Programming In this section, we cover the multithreading APIs new to Framework 4.0 ...
- C# LINQ(10)
LINQ 查询 var query = from r in Formula1.GetChampions() where r.Country == "Brazil" orderby ...
- C#基础提升系列——C# LINQ
C# LINQ LINQ(Language Integrated Query,语言集成查询).在C# 语言中集成了查询语法,可以用相同的语法访问不同的数据源. 命名空间System.Linq下的类En ...
随机推荐
- BZOJ(1) 1003 [ZJOI2006]物流运输
1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 9404 Solved: 4087[Submit][Stat ...
- HTTP状态码图示
这里总结下我们日常开发中常用的HTTP状态码,分享一个老外对HTTP状态码形象化用图片表示的网站:https://http.cat/ 总结如下: 表示服务器已经接收到了请求头,并且客户端应该继续发送请 ...
- Android系统编译时遇到的几个.mk的疑惑。
在Android4.2的源代码Build/prduct_config.mk里面遇到几个疑惑: # Convert a short name like "sooner" into t ...
- java集合: List、Set、Map总结 + HashMap/Hashtable 差别
List:(有序,能够反复)通过下标索引 ----ArrayList 可变数组,随机查找 ----LinkedList 链表,不论什么位置插入删除快 ----Vecto ...
- 创业公司十分钟简单搭建GIT私有库
欢迎关注老码农的微信公共账号,与CSDN博客同步 一.背景 小公司.协同开发的人不多,建gitlab比較麻烦,仅仅须要在Server端建立一个简单的git共享库就OK. 二.建立仓库 Server端: ...
- LeetCode 970. Powerful Integers (强整数)
题目标签:HashMap 题目让我们找出所有独一的powerful integers 小于bound的情况下. 把 x^i 看作 a:把 y^j 看作b, 代入for loop,把所有的情况都遍历一遍 ...
- Flash--元件和实例
1.元件简述: 元件在Flash影片中是一种特殊的对象.在Flash中仅仅须要创建一次,然后能够在整部电影中重复使用而不会显著添加 文件大小. 事实上在使用元件时,我们一般使用的是该元件的实例,所以说 ...
- _io.TextIOWrapper
''' SELECT * FROM Info_Roles WHERE Flag=1 LIMIT 2; select top y * from 表 where 主键 not in(select top ...
- oc81--copy内存管理
// // main.m // Copy内存管理(MRC才有内存管理) // #import <Foundation/Foundation.h> int main(int argc, co ...
- BitmapFactory.decodeStream()获取bitmap返回null
正常的图片缩放代码如: ByteArrayOutputStream baos = new ByteArrayOutputStream(); arg1.compress(Bitmap.CompressF ...