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. 然后,它将 MethodCallExpression 传递到 IQueryProviderCreateQuery<TElement>(Expression) 方法(由 source1 参数的 Provider 属性表示)。It 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>) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。The 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. 预期的行为是,同时返回 source1source2 的所有元素。The 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);
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. 然后,它将 MethodCallExpression 传递到 IQueryProviderCreateQuery<TElement>(Expression) 方法(由 source1 参数的 Provider 属性表示)。It 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>) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。The 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. 预期的行为是,同时返回 source1source2 的所有元素。The 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.

适用于