SuperLinq SuperLinq
SuperLinq SuperLinq
DocFX + Singulink = ♥

Search Results for

    Method Case

    | Edit this page

    Case<TValue, TResult>(Func<TValue>, IDictionary<TValue, IEnumerable<TResult>>)

    Returns a sequence from a dictionary based on the result of evaluating a selector function.

    Declaration
    public static IEnumerable<TResult> Case<TValue, TResult>(Func<TValue> selector, IDictionary<TValue, IEnumerable<TResult>> sources) where TValue : notnull
    Parameters
    Type Name Description
    Func<TValue> selector

    Selector function used to pick a sequence from the given sources.

    IDictionary<TValue, IEnumerable<TResult>> sources

    Dictionary mapping selector values onto resulting sequences.

    Returns
    Type Description
    IEnumerable<TResult>

    The source sequence corresponding with the evaluated selector value; otherwise, an empty sequence.

    Type Parameters
    Name Description
    TValue

    Type of the selector value.

    TResult

    Result sequence element type.

    Remarks

    selector is not evaluated until enumeration. The value returned will be used to select a sequence from sources; enumeration will continue with items from that sequence.

    If the value returned by selector is not present in sources, the resulting sequence will be empty.

    Examples

    The following code example demonstrates how to select which sequence to return values from, using Case.

    var sequences = Enumerable.Range(1, 5)
        .ToDictionary(
            x => x,
            x => Enumerable.Range(1, x));
    
    // Use a function to select which sequence to return values from.
    var selector = 1;
    var result = SuperEnumerable
        .Case(
            () => selector,
            sequences);
    
    Console.WriteLine($"Selector: {selector}; result.Count(): {result.Count()}.");
    selector = 4;
    Console.WriteLine($"Selector: {selector}; result.Count(): {result.Count()}.");
    selector = 2;
    Console.WriteLine($"Selector: {selector}; result.Count(): {result.Count()}.");
    
    // This code produces the following output:
    // Selector: 1; result.Count(): 1.
    // Selector: 4; result.Count(): 4.
    // Selector: 2; result.Count(): 2.
    
    Exceptions
    Type Condition
    ArgumentNullException

    selector or sources is null.

    ArgumentNullException

    (Thrown lazily) The sequence in sources selected by the result of selector is null.

    | Edit this page

    Case<TValue, TResult>(Func<TValue>, IDictionary<TValue, IEnumerable<TResult>>, IEnumerable<TResult>)

    Returns a sequence from a dictionary based on the result of evaluating a selector function.

    Declaration
    public static IEnumerable<TResult> Case<TValue, TResult>(Func<TValue> selector, IDictionary<TValue, IEnumerable<TResult>> sources, IEnumerable<TResult> defaultSource) where TValue : notnull
    Parameters
    Type Name Description
    Func<TValue> selector

    Selector function used to pick a sequence from the given sources.

    IDictionary<TValue, IEnumerable<TResult>> sources

    Dictionary mapping selector values onto resulting sequences.

    IEnumerable<TResult> defaultSource

    Default sequence to return in case there's no corresponding source for the computed selector value.

    Returns
    Type Description
    IEnumerable<TResult>

    The source sequence corresponding with the evaluated selector value; otherwise, the defaultSource sequence.

    Type Parameters
    Name Description
    TValue

    Type of the selector value.

    TResult

    Result sequence element type.

    Remarks

    selector is not evaluated until enumeration. The value returned will be used to select a sequence from sources; enumeration will continue with items from that sequence.

    Examples

    The following code example demonstrates how to select which sequence to return values from, using Case.

    var sequences = Enumerable.Range(1, 5)
        .ToDictionary(
            x => x,
            x => Enumerable.Range(1, x));
    
    // Use a function to select which sequence to return values from.
    var selector = 1;
    var result = SuperEnumerable
        .Case(
            () => selector,
            sequences,
            Enumerable.Range(1, 100));
    
    Console.WriteLine($"Selector: {selector}; result.Count(): {result.Count()}.");
    selector = 4;
    Console.WriteLine($"Selector: {selector}; result.Count(): {result.Count()}.");
    selector = 20;
    Console.WriteLine($"Selector: {selector}; result.Count(): {result.Count()}.");
    
    // This code produces the following output:
    // Selector: 1; result.Count(): 1.
    // Selector: 4; result.Count(): 4.
    // Selector: 20; result.Count(): 100.
    
    Exceptions
    Type Condition
    ArgumentNullException

    selector, sources or defaultSource is null.

    ArgumentNullException

    (Thrown lazily) The sequence in sources selected by the result of selector is null.

    © SuperLinq Authors. All rights reserved.