ZipShortestExtensionZipShortestTFirst, TSecond, TResult(IEnumerableTFirst, IEnumerableTSecond, FuncTFirst, TSecond, TResult) Method

Returns a projection of tuples, where each tuple contains the N-th element from each of the argument sequences. The resulting sequence is as short as the shortest input sequence.

Definition

Namespace: MoreLinq.Extensions
Assembly: MoreLinq (in MoreLinq.dll) Version: 3.4.0+b99a6a8cc504caf2d48372fe54a2f8116c59cd0c
C#
public static IEnumerable<TResult> ZipShortest<TFirst, TSecond, TResult>(
	this IEnumerable<TFirst> first,
	IEnumerable<TSecond> second,
	Func<TFirst, TSecond, TResult> resultSelector
)

Parameters

first  IEnumerableTFirst
The first sequence.
second  IEnumerableTSecond
The second sequence.
resultSelector  FuncTFirst, TSecond, TResult
Function to apply to each pair of elements.

Type Parameters

TFirst
Type of elements in first sequence.
TSecond
Type of elements in second sequence.
TResult
Type of elements in result sequence.

Return Value

IEnumerableTResult
A projection of tuples, where each tuple contains the N-th element from each of the argument sequences.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type IEnumerableTFirst. 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

If the input sequences are of different lengths, the result sequence is terminated as soon as the shortest input sequence is exhausted and remainder elements from the longer sequences are never consumed.

This operator uses deferred execution and streams its results.

Example

first, second, or resultSelector is .
C#
var numbers = new[] { 1, 2, 3 };
var letters = new[] { "A", "B", "C", "D" };
var zipped = numbers.ZipShortest(letters, (n, l) => n + l);
The zipped variable, when iterated over, will yield "1A", "2B", "3C", in turn.

See Also