Прочитать на английском

Поделиться через


Enumerable.Zip Метод

Определение

Перегрузки

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

Применяет указанную функцию к соответствующим элементам двух последовательностей, что дает последовательность результатов.

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

Создает последовательность кортежей с элементами из трех указанных последовательностей.

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

Создает последовательность кортежей с элементами из двух указанных последовательностей.

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

Исходный код:
Zip.cs
Исходный код:
Zip.cs
Исходный код:
Zip.cs

Применяет указанную функцию к соответствующим элементам двух последовательностей, что дает последовательность результатов.

C#
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);

Параметры типа

TFirst

Тип элементов первой входной последовательности.

TSecond

Тип элементов второй входной последовательности.

TResult

Тип элементов результирующей последовательности.

Параметры

first
IEnumerable<TFirst>

Первая последовательность для объединения.

second
IEnumerable<TSecond>

Вторая последовательность для объединения.

resultSelector
Func<TFirst,TSecond,TResult>

Функция, которая определяет, как объединить элементы двух последовательностей.

Возвращаемое значение

IEnumerable<TResult>

Объект IEnumerable<T>, содержащий объединенные элементы двух входных последовательностей.

Исключения

Параметр first или second имеет значение null.

Примеры

В следующем примере кода показано, как использовать Zip метод для слияния двух последовательностей.

C#
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

Комментарии

Этот метод реализуется с помощью отложенного выполнения. Немедленное возвращаемое значение — это объект, в котором хранятся все сведения, необходимые для выполнения действия. Запрос, представленный этим методом, не выполняется, пока объект не будет перечислен либо путем вызова его GetEnumerator метода напрямую, либо с помощью foreach в C# или For Each в Visual Basic.

Метод объединяет каждый элемент первой последовательности с элементом, который имеет тот же индекс во второй последовательности. Если последовательности имеют не одинаковое количество элементов, метод объединяет последовательности, пока не достигнет конца одного из них. Например, если одна последовательность содержит три элемента, а другая — четыре, результирующий последовательность будет содержать только три элемента.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
Zip.cs
Исходный код:
Zip.cs
Исходный код:
Zip.cs

Создает последовательность кортежей с элементами из трех указанных последовательностей.

C#
public static System.Collections.Generic.IEnumerable<(TFirst First, TSecond Second, TThird Third)> Zip<TFirst,TSecond,TThird> (this System.Collections.Generic.IEnumerable<TFirst> first, System.Collections.Generic.IEnumerable<TSecond> second, System.Collections.Generic.IEnumerable<TThird> third);

Параметры типа

TFirst

Тип элементов первой входной последовательности.

TSecond

Тип элементов второй входной последовательности.

TThird

Тип элементов третьей входной последовательности.

Параметры

first
IEnumerable<TFirst>

Первая последовательность для объединения.

second
IEnumerable<TSecond>

Вторая последовательность для объединения.

third
IEnumerable<TThird>

Третья последовательность для слияния.

Возвращаемое значение

IEnumerable<ValueTuple<TFirst,TSecond,TThird>>

Последовательность кортежей с элементами, взятыми из первой, второй и третьей последовательностей в этом порядке.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET 6, 7, 8, 9

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

Исходный код:
Zip.cs
Исходный код:
Zip.cs
Исходный код:
Zip.cs

Создает последовательность кортежей с элементами из двух указанных последовательностей.

C#
public static System.Collections.Generic.IEnumerable<(TFirst First, TSecond Second)> Zip<TFirst,TSecond> (this System.Collections.Generic.IEnumerable<TFirst> first, System.Collections.Generic.IEnumerable<TSecond> second);

Параметры типа

TFirst

Тип элементов первой входной последовательности.

TSecond

Тип элементов второй входной последовательности.

Параметры

first
IEnumerable<TFirst>

Первая последовательность для объединения.

second
IEnumerable<TSecond>

Вторая последовательность для объединения.

Возвращаемое значение

IEnumerable<ValueTuple<TFirst,TSecond>>

Последовательность кортежей с элементами, взятыми из первой и второй последовательностей в указанном порядке.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9