交集:通过使用默认的相等比较器对值进行比较生成两个序列的交集

本文介绍在.NET Framework 3.5中使用LINQ的Intersect方法,该方法用于找出两个序列的交集。通过示例代码展示了如何从两个整数数组中获取共同元素。

支持.net 3.5

语法:

public   static  IEnumerable < TSource >  Intersect < TSource > (
    
this  IEnumerable < TSource >  first,
    IEnumerable
< TSource >  second
)

 

类型参数
TSource

输入序列中的元素的类型。

参数
first
类型: System.Collections.Generic..::.IEnumerable < (Of < ( TSource > ) > )

一个 IEnumerable<(Of <(T>)>),将返回其也出现在 second 中的非重复元素。

second
类型: System.Collections.Generic..::.IEnumerable < (Of < ( TSource > ) > )

一个 IEnumerable<(Of <(T>)>),将返回其也出现在第一个序列中的非重复元素。

返回值
类型: System.Collections.Generic..::.IEnumerable < (Of < ( TSource > ) > )

包含组成两个序列交集的元素的序列。 

 

此方法通过使用延迟执行实现。即时返回值为一个对象,该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach(或 Visual Basic 中的 For Each)来枚举该对象时,才执行此方法表示的查询。

集 A 和集 B 的交集定义为包含同时出现在 A 和 B 中的所有元素的集,但不包含任何其他元素。

当枚举此方法返回的对象时,Intersect 将枚举 first,以收集该序列中的所有非重复元素。然后,枚举 second,从而标记那些同时出现在两个序列中的元素。最后,按收集顺序生成标记的元素。

使用默认的相等比较器 Default 对值进行比较。

集 A 和集 B 的交集定义为包含同时出现在 A 和 B 中的所有元素的集,但不包含任何其他元素。

下面的代码示例演示如何使用 Intersect<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 返回同时出现在两个序列中的元素。

int [] id1  =  {  44 26 92 30 71 38  };
int [] id2  =  {  39 59 83 47 26 4 30  };

IEnumerable
< int >  both  =  id1.Intersect(id2);

foreach  ( int  id  in  both)
    Console.WriteLine(id);

/*
 This code produces the following output:

 26
 30
*/

 

 http://msdn.microsoft.com/zh-cn/library/bb460136.aspx

 

转载于:https://www.cnblogs.com/valens/archive/2008/12/23/1360349.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值