Choose

É gerada uma nova coleção aplicando a função chooser em cada um dos elementos. Os elementos cuja função chooser retorne um valor opcional o estado IsNone são filtrados.

Esta função atua de forma semelhante à um Map e Filter em conjunto.

Parâmetros

Retorno

Func<T, Option<TResult>> chooser

IEnumerable<T> source

IEnumerable<TResult>

Como usar

Escolhendo valores pares em uma coleção com uma função nomeada

//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" }

Escolhendo o quadrado dos valores ímpares em uma coleção através de uma função anônima

//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