Queryable.Zip 方法

定义

重载

Zip<TFirst,TSecond,TResult>(IQueryable<TFirst>, IEnumerable<TSecond>, Expression<Func<TFirst,TSecond,TResult>>)

通过使用指定的谓词函数合并两个序列。

Zip<TFirst,TSecond,TThird>(IQueryable<TFirst>, IEnumerable<TSecond>, IEnumerable<TThird>)

使用三个指定序列中的元素生成元组序列。

Zip<TFirst,TSecond>(IQueryable<TFirst>, IEnumerable<TSecond>)

使用两个指定序列中的元素生成元组序列。

Zip<TFirst,TSecond,TResult>(IQueryable<TFirst>, IEnumerable<TSecond>, Expression<Func<TFirst,TSecond,TResult>>)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

通过使用指定的谓词函数合并两个序列。

public:
generic <typename TFirst, typename TSecond, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ Zip(System::Linq::IQueryable<TFirst> ^ source1, System::Collections::Generic::IEnumerable<TSecond> ^ source2, System::Linq::Expressions::Expression<Func<TFirst, TSecond, TResult> ^> ^ resultSelector);
public static System.Linq.IQueryable<TResult> Zip<TFirst,TSecond,TResult> (this System.Linq.IQueryable<TFirst> source1, System.Collections.Generic.IEnumerable<TSecond> source2, System.Linq.Expressions.Expression<Func<TFirst,TSecond,TResult>> resultSelector);
static member Zip : System.Linq.IQueryable<'First> * seq<'Second> * System.Linq.Expressions.Expression<Func<'First, 'Second, 'Result>> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function Zip(Of TFirst, TSecond, TResult) (source1 As IQueryable(Of TFirst), source2 As IEnumerable(Of TSecond), resultSelector As Expression(Of Func(Of TFirst, TSecond, TResult))) As IQueryable(Of TResult)

类型参数

TFirst

第一个输入序列中的元素的类型。

TSecond

第二个输入序列中的元素的类型。

TResult

结果序列的元素的类型。

参数

source1
IQueryable<TFirst>

要合并的第一个序列。

source2
IEnumerable<TSecond>

要合并的第二个序列。

resultSelector
Expression<Func<TFirst,TSecond,TResult>>

用于指定如何合并这两个序列中的元素的函数。

返回

IQueryable<TResult>

一个包含两个输入序列中的合并元素的 IQueryable<T>

例外

source1source2null

示例

下面的代码示例演示如何使用 Zip 方法合并两个序列。

int[] numbers = { 1, 2, 3, 4 };
string[] words = { "one", "two", "three" };

var numbersAndWords = numbers.AsQueryable().Zip(words, (first, second) => first + " " + second);

foreach (var item in numbersAndWords)
    Console.WriteLine(item);

// This code produces the following output:

// 1 one
// 2 two
// 3 three
Dim numbers() As Integer = {1, 2, 3, 4}
Dim words() As String = {"one", "two", "three"}
Dim numbersAndWords = numbers.AsQueryable().Zip(words, Function(first, second) first & " " & second)

For Each item In numbersAndWords
    Console.WriteLine(item)
Next

' This code produces the following output:

' 1 one
' 2 two
' 3 three

注解

方法 Zip 生成一个 , MethodCallExpression 它将调用 Zip 自身表示为构造的泛型方法。 然后,MethodCallExpressionCreateQuery<TElement>(Expression)它将 传递给 由 Provider 参数的 属性表示的 的 source1 方法IQueryProvider

方法将第一个序列的每个元素与在第二个序列中具有相同索引的元素合并。 如果序列不具有相同数量的元素,该方法将合并序列,直到到达其中一个元素的末尾。 例如,如果一个序列有三个元素,另一个序列有四个元素,则生成的序列将只有三个元素。

适用于

Zip<TFirst,TSecond,TThird>(IQueryable<TFirst>, IEnumerable<TSecond>, IEnumerable<TThird>)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

使用三个指定序列中的元素生成元组序列。

public:
generic <typename TFirst, typename TSecond, typename TThird>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<ValueTuple<TFirst, TSecond, TThird>> ^ Zip(System::Linq::IQueryable<TFirst> ^ source1, System::Collections::Generic::IEnumerable<TSecond> ^ source2, System::Collections::Generic::IEnumerable<TThird> ^ source3);
public static System.Linq.IQueryable<(TFirst First, TSecond Second, TThird Third)> Zip<TFirst,TSecond,TThird> (this System.Linq.IQueryable<TFirst> source1, System.Collections.Generic.IEnumerable<TSecond> source2, System.Collections.Generic.IEnumerable<TThird> source3);
static member Zip : System.Linq.IQueryable<'First> * seq<'Second> * seq<'hird> -> System.Linq.IQueryable<ValueTuple<'First, 'Second, 'hird>>
<Extension()>
Public Function Zip(Of TFirst, TSecond, TThird) (source1 As IQueryable(Of TFirst), source2 As IEnumerable(Of TSecond), source3 As IEnumerable(Of TThird)) As IQueryable(Of ValueTuple(Of TFirst, TSecond, TThird))

类型参数

TFirst

第一个输入序列中的元素的类型。

TSecond

第二个输入序列中的元素的类型。

TThird

第三个输入序列的元素的类型。

参数

source1
IQueryable<TFirst>

要合并的第一个序列。

source2
IEnumerable<TSecond>

要合并的第二个序列。

source3
IEnumerable<TThird>

要合并的第三个序列。

返回

IQueryable<ValueTuple<TFirst,TSecond,TThird>>

元组序列,其元素取自第一个、第二个和第三个序列,按该顺序排列。

适用于

Zip<TFirst,TSecond>(IQueryable<TFirst>, IEnumerable<TSecond>)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

使用两个指定序列中的元素生成元组序列。

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

类型参数

TFirst

第一个输入序列中的元素的类型。

TSecond

第二个输入序列中的元素的类型。

参数

source1
IQueryable<TFirst>

要合并的第一个序列。

source2
IEnumerable<TSecond>

要合并的第二个序列。

返回

IQueryable<ValueTuple<TFirst,TSecond>>

一组元组序列,其中的元素按该顺序取自第一个和第二个序列。

适用于