Queryable.Intersect 方法

定义

生成两个序列的交集。Produces the set intersection of two sequences.

重载

Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>)

通过使用默认的相等比较器对值进行比较,生成两个序列的交集。Produces the set intersection of two sequences by using the default equality comparer to compare values.

Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

通过使用指定的 IEqualityComparer<T> 对值进行比较,生成两个序列的交集。Produces the set intersection of two sequences by using the specified IEqualityComparer<T> to compare values.

Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>)

通过使用默认的相等比较器对值进行比较,生成两个序列的交集。Produces the set intersection of two sequences by using the default equality comparer to compare values.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TSource> ^ Intersect(System::Linq::IQueryable<TSource> ^ source1, System::Collections::Generic::IEnumerable<TSource> ^ source2);
public static System.Linq.IQueryable<TSource> Intersect<TSource> (this System.Linq.IQueryable<TSource> source1, System.Collections.Generic.IEnumerable<TSource> source2);
static member Intersect : System.Linq.IQueryable<'Source> * seq<'Source> -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function Intersect(Of TSource) (source1 As IQueryable(Of TSource), source2 As IEnumerable(Of TSource)) As IQueryable(Of TSource)

类型参数

TSource

输入序列中的元素的类型。The type of the elements of the input sequences.

参数

source1
IQueryable<TSource>

一个序列,将返回其也出现在 source2 中的非重复元素。A sequence whose distinct elements that also appear in source2 are returned.

source2
IEnumerable<TSource>

一个序列,将返回其也在第一个序列中出现的非重复元素。A sequence whose distinct elements that also appear in the first sequence are returned.

返回

IQueryable<TSource>

一个包含两个序列的交集的序列。A sequence that contains the set intersection of the two sequences.

例外

source1source2nullsource1 or source2 is null.

示例

下面的代码示例演示如何使用 Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>) 来返回出现在两个序列中的元素。The following code example demonstrates how to use Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>) to return the elements that appear in each of two sequences.

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

// Get the numbers that occur in both arrays (id1 and id2).
IEnumerable<int> both = id1.AsQueryable().Intersect(id2);

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

/*
    This code produces the following output:

    26
    30
*/
Dim id1() As Integer = {44, 26, 92, 30, 71, 38}
Dim id2() As Integer = {39, 59, 83, 47, 26, 4, 30}

' Get the numbers that occur in both arrays (id1 and id2).
Dim both As IEnumerable(Of Integer) = id1.AsQueryable().Intersect(id2)

Dim output As New System.Text.StringBuilder
For Each id As Integer In both
    output.AppendLine(id)
Next

' Display the output.
MsgBox(output.ToString())

' This code produces the following output:

' 26
' 30

注解

Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>)方法生成一个 MethodCallExpression ,它表示调用 Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>) 自身作为构造的泛型方法。The Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>) method generates a MethodCallExpression that represents calling Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>) itself as a constructed generic method. 然后,它将传递 MethodCallExpressionCreateQuery<TElement>(Expression) IQueryProvider 由参数的属性表示的的方法 Provider source1It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source1 parameter.

由于执行表示调用的表达式树而发生的查询行为 Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>) 取决于参数类型的实现 source1The query behavior that occurs as a result of executing an expression tree that represents calling Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>) depends on the implementation of the type of the source1 parameter. 预期的行为是 source1 同时返回中的所有元素 source2The expected behavior is that all the elements in source1 that are also in source2 are returned.

适用于

Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

通过使用指定的 IEqualityComparer<T> 对值进行比较,生成两个序列的交集。Produces the set intersection of two sequences by using the specified IEqualityComparer<T> to compare values.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TSource> ^ Intersect(System::Linq::IQueryable<TSource> ^ source1, System::Collections::Generic::IEnumerable<TSource> ^ source2, System::Collections::Generic::IEqualityComparer<TSource> ^ comparer);
public static System.Linq.IQueryable<TSource> Intersect<TSource> (this System.Linq.IQueryable<TSource> source1, System.Collections.Generic.IEnumerable<TSource> source2, System.Collections.Generic.IEqualityComparer<TSource> comparer);
public static System.Linq.IQueryable<TSource> Intersect<TSource> (this System.Linq.IQueryable<TSource> source1, System.Collections.Generic.IEnumerable<TSource> source2, System.Collections.Generic.IEqualityComparer<TSource>? comparer);
static member Intersect : System.Linq.IQueryable<'Source> * seq<'Source> * System.Collections.Generic.IEqualityComparer<'Source> -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function Intersect(Of TSource) (source1 As IQueryable(Of TSource), source2 As IEnumerable(Of TSource), comparer As IEqualityComparer(Of TSource)) As IQueryable(Of TSource)

类型参数

TSource

输入序列中的元素的类型。The type of the elements of the input sequences.

参数

source1
IQueryable<TSource>

一个 IQueryable<T>,将返回其也出现在 source2 中的非重复元素。An IQueryable<T> whose distinct elements that also appear in source2 are returned.

source2
IEnumerable<TSource>

一个 IEnumerable<T>,将返回其也出现在第一个序列中的非重复元素。An IEnumerable<T> whose distinct elements that also appear in the first sequence are returned.

comparer
IEqualityComparer<TSource>

用于比较值的 IEqualityComparer<T>An IEqualityComparer<T> to compare values.

返回

IQueryable<TSource>

一个 IQueryable<T>,它包含两个序列的交集。An IQueryable<T> that contains the set intersection of the two sequences.

例外

source1source2nullsource1 or source2 is null.

注解

Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)方法生成一个 MethodCallExpression ,它表示调用 Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) 自身作为构造的泛型方法。The Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) method generates a MethodCallExpression that represents calling Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) itself as a constructed generic method. 然后,它将传递 MethodCallExpressionCreateQuery<TElement>(Expression) IQueryProvider 由参数的属性表示的的方法 Provider source1It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source1 parameter.

由于执行表示调用的表达式树而发生的查询行为 Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) 取决于参数类型的实现 source1The query behavior that occurs as a result of executing an expression tree that represents calling Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) depends on the implementation of the type of the source1 parameter. 预期的行为是 source1 同时返回中的所有元素 source2The expected behavior is that all the elements in source1 that are also in source2 are returned. comparer参数用于比较元素。The comparer parameter is used to compare elements.

适用于