Choose

Applies the given chooser function to each element of the collection. Returns the collection comprised of the TResult results for each element where the function returns an Option<T>.Some.

This function works like a combination of Map and Filter.

Parameters

Returns

Func<T, Option<TResult>> chooser

IEnumerable<T> source

IEnumerable<TResult>

Usage

Choosing even numbers in a collection by using a named function

//IEnumerable<int> source = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }

Option<string> NumberToStringWhenEven(int value)
{
    if(value % 2 == 0)
        return value.ToString();
    else
        return Option<string>.None();
}

IEnumerable<int> result = source.Choose(NumberToStringWhenEven);

//result = { "2", "4", "6", "8", "10" }

Choosing the square of odd numbers by using an anonymous function

//IEnumerable<int> source = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }

IEnumerable<int> result = 
    source.Choose(value => 
            {
                if(value % 2 == 1)
                    return value * value;
                else
                    return Option<int>.None();
            });

//result = { 1, 9, 25, 49, 81 }

Last updated