SuperLinq SuperLinq
SuperLinq SuperLinq
DocFX + Singulink = ♥

Search Results for

    Method Batch

    Batch<TSource, TResult>(IEnumerable<TSource>, int, ReadOnlySpanFunc<TSource, TResult>)

    Split the elements of a sequence into chunks of size at most size.

    Declaration
    public static IEnumerable<TResult> Batch<TSource, TResult>(this IEnumerable<TSource> source, int size, SuperEnumerable.ReadOnlySpanFunc<TSource, TResult> resultSelector)
    Parameters
    Type Name Description
    IEnumerable<TSource> source

    An IEnumerable<T> whose elements to chunk.

    int size

    The maximum size of each chunk.

    SuperEnumerable.ReadOnlySpanFunc<TSource, TResult> resultSelector

    A transform function to apply to each chunk.

    Returns
    Type Description
    IEnumerable<TResult>

    A sequence of elements returned by resultSelector.

    Type Parameters
    Name Description
    TSource

    The type of the elements of source.

    TResult

    The type of the value return by resultSelector.

    Remarks

    A chunk can contain fewer elements than size, specifically the final chunk of source.

    In this overload of Batch, a single array of length size is allocated as a buffer for all subsequences.

    This operator uses deferred execution and streams its results.

    Exceptions
    Type Condition
    ArgumentNullException

    source or resultSelector is null.

    ArgumentOutOfRangeException

    size is below 1.

    Batch<TSource, TResult>(IEnumerable<TSource>, TSource[], ReadOnlySpanFunc<TSource, TResult>)

    Split the elements of a sequence into chunks of size at most array.Length.

    Declaration
    public static IEnumerable<TResult> Batch<TSource, TResult>(this IEnumerable<TSource> source, TSource[] array, SuperEnumerable.ReadOnlySpanFunc<TSource, TResult> resultSelector)
    Parameters
    Type Name Description
    IEnumerable<TSource> source

    An IEnumerable<T> whose elements to chunk.

    TSource[] array

    The array to use as a buffer for each chunk

    SuperEnumerable.ReadOnlySpanFunc<TSource, TResult> resultSelector

    A transform function to apply to each chunk.

    Returns
    Type Description
    IEnumerable<TResult>

    A sequence of elements returned by resultSelector.

    Type Parameters
    Name Description
    TSource

    The type of the elements of source.

    TResult

    The type of the value return by resultSelector.

    Remarks

    A chunk can contain fewer elements than array.Length, specifically the final chunk of source.

    In this overload of Batch, array is used as a common buffer for all subsequences.

    This operator uses deferred execution and streams its results.

    Exceptions
    Type Condition
    ArgumentNullException

    source, resultSelector, or array is null.

    Batch<TSource, TResult>(IEnumerable<TSource>, TSource[], int, ReadOnlySpanFunc<TSource, TResult>)

    Split the elements of a sequence into chunks of size at most size.

    Declaration
    public static IEnumerable<TResult> Batch<TSource, TResult>(this IEnumerable<TSource> source, TSource[] array, int size, SuperEnumerable.ReadOnlySpanFunc<TSource, TResult> resultSelector)
    Parameters
    Type Name Description
    IEnumerable<TSource> source

    An IEnumerable<T> whose elements to chunk.

    TSource[] array

    The array to use as a buffer for each chunk

    int size

    The maximum size of each chunk.

    SuperEnumerable.ReadOnlySpanFunc<TSource, TResult> resultSelector

    A transform function to apply to each chunk.

    Returns
    Type Description
    IEnumerable<TResult>

    A sequence of elements returned by resultSelector.

    Type Parameters
    Name Description
    TSource

    The type of the elements of source.

    TResult

    The type of the value return by resultSelector.

    Remarks

    A chunk can contain fewer elements than size, specifically the final chunk of source.

    In this overload of Batch, array is used as a common buffer for all subsequences. This overload is provided to ease usage of common buffers, such as those rented from ArrayPool<T>, which may return an array larger than requested.

    This operator uses deferred execution and streams its results.

    Exceptions
    Type Condition
    ArgumentNullException

    source, resultSelector, or array is null.

    | Edit this page

    Batch<TSource>(IEnumerable<TSource>, int)

    Split the elements of a sequence into chunks of size at most size.

    Declaration
    public static IEnumerable<IList<TSource>> Batch<TSource>(this IEnumerable<TSource> source, int size)
    Parameters
    Type Name Description
    IEnumerable<TSource> source

    An IEnumerable<T> whose elements to chunk.

    int size

    The maximum size of each chunk.

    Returns
    Type Description
    IEnumerable<IList<TSource>>

    An IEnumerable<T> that contains the elements the input sequence split into chunks of size size.

    Type Parameters
    Name Description
    TSource

    The type of the elements of source.

    Remarks

    A chunk can contain fewer elements than size, specifically the final buffer of source.

    A separate array is allocated for each returned chunk. Other overloads of Batch are available which do not require additional array allocations for each chunk.

    Returned subsequences are buffered, but the overall operation is streamed.

    Examples

    The following code example demonstrates how to break a sequence into chunks of a specific size, using Batch.

    var sequence = Enumerable.Range(1, 10);
    
    // Break the sequence of numbers into three chunks of 3 and one chunk of 1
    var result = sequence.Batch(3);
    
    Console.WriteLine(
        "[" + 
        string.Join(
            ", ", 
            result.Select(c => "[" + string.Join(", ", c) + "]")) +
        "]");
    
    // This code produces the following output:
    // [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
    
    Exceptions
    Type Condition
    ArgumentNullException

    source is null.

    ArgumentOutOfRangeException

    size is below 1.

    © SuperLinq Authors. All rights reserved.