MoreEnumerableZipLongestT1, T2, T3, T4, TResult(IEnumerableT1, IEnumerableT2, IEnumerableT3, IEnumerableT4, FuncT1, T2, T3, T4, TResult) Method

Returns a projection of tuples, where each tuple contains the N-th element from each of the argument sequences. The resulting sequence will always be as long as the longest of input sequences where the default value of each of the shorter sequence element types is used for padding.

Definition

Namespace: MoreLinq
Assembly: MoreLinq (in MoreLinq.dll) Version: 3.4.0+b99a6a8cc504caf2d48372fe54a2f8116c59cd0c
C#
public static IEnumerable<TResult> ZipLongest<T1, T2, T3, T4, TResult>(
	this IEnumerable<T1> first,
	IEnumerable<T2> second,
	IEnumerable<T3> third,
	IEnumerable<T4> fourth,
	Func<T1, T2, T3, T4, TResult> resultSelector
)

Parameters

first  IEnumerableT1
The first sequence.
second  IEnumerableT2
The second sequence.
third  IEnumerableT3
The third sequence.
fourth  IEnumerableT4
The fourth sequence.
resultSelector  FuncT1, T2, T3, T4, TResult
Function to apply to each quadruplet of elements.

Type Parameters

T1
Type of elements in first sequence
T2
Type of elements in second sequence
T3
Type of elements in third sequence
T4
Type of elements in fourth sequence
TResult
Type of elements in result sequence

Return Value

IEnumerableTResult
A sequence that contains elements of the four input sequences, combined by resultSelector.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type IEnumerableT1. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

Remarks

This operator uses deferred execution and streams its results.

Example

C#
var numbers = new[] { 1, 2, 3 };
var letters = new[] { "A", "B", "C", "D" };
var chars   = new[] { 'a', 'b', 'c', 'd', 'e' };
var flags   = new[] { true, false, true, false, true, false };
var zipped  = numbers.ZipLongest(letters, chars, flags, (n, l, c, f) => n + l + c + f);
The zipped variable, when iterated over, will yield "1AaTrue", "2BbFalse", "3CcTrue", "0DdFalse", "0eTrue", "0\0False" in turn.

Exceptions

ArgumentNullExceptionfirst, second, third, fourth, or resultSelector is .

See Also