Enumerable.Zip<TFirst,TSecond,TResult> Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Применяет указанную функцию к соответствующим элементам двух последовательностей, создавая последовательность результатов.
public:
generic <typename TFirst, typename TSecond, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TResult> ^ Zip(System::Collections::Generic::IEnumerable<TFirst> ^ first, System::Collections::Generic::IEnumerable<TSecond> ^ second, Func<TFirst, TSecond, TResult> ^ resultSelector);
public static System.Collections.Generic.IEnumerable<TResult> Zip<TFirst,TSecond,TResult>(this System.Collections.Generic.IEnumerable<TFirst> first, System.Collections.Generic.IEnumerable<TSecond> second, Func<TFirst,TSecond,TResult> resultSelector);
static member Zip : seq<'First> * seq<'Second> * Func<'First, 'Second, 'Result> -> seq<'Result>
<Extension()>
Public Function Zip(Of TFirst, TSecond, TResult) (first As IEnumerable(Of TFirst), second As IEnumerable(Of TSecond), resultSelector As Func(Of TFirst, TSecond, TResult)) As IEnumerable(Of TResult)
Параметры типа
- TFirst
Тип элементов первой входной последовательности.
- TSecond
Тип элементов второй входной последовательности.
- TResult
Тип элементов последовательности результатов.
Параметры
- first
- IEnumerable<TFirst>
Первая последовательность для слияния.
- second
- IEnumerable<TSecond>
Вторая последовательность для слияния.
- resultSelector
- Func<TFirst,TSecond,TResult>
Функция, указывающая, как объединить элементы из двух последовательностей.
Возвращаемое значение
Объект IEnumerable<T> , содержащий объединенные элементы двух входных последовательностей.
Исключения
first или second есть null.
Примеры
В следующем примере кода показано, как использовать Zip метод для объединения двух последовательностей.
int[] numbers = { 1, 2, 3, 4 };
string[] words = { "one", "two", "three" };
var numbersAndWords = numbers.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.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
Комментарии
Этот метод реализуется с помощью отложенного выполнения. Немедленное возвращаемое значение — это объект, в который хранятся все сведения, необходимые для выполнения действия. Запрос, представленный этим методом, не выполняется, пока объект не перечисляется путем вызова метода GetEnumerator напрямую или с помощью метода foreach в C# или For Each в Visual Basic.
Метод объединяет каждый элемент первой последовательности с элементом, который имеет тот же индекс во второй последовательности. Если последовательности не имеют одинакового количества элементов, метод объединяет последовательности до тех пор, пока не достигнет конца одного из них. Например, если одна последовательность содержит три элемента, а другая имеет четыре, результирующий последовательность будет содержать только три элемента.