Tuples, Tuples – Returning multiple results from a function (C#)

I have no idea of how many times I had to write a function do discover the minimum and the maximum value of a sequence.

I just love the way I can do it now, using C#.

public static class EnumerableExtensions
{
    public static (T min, T max) MinMax<T>(this IEnumerable<T> source)
        where T : IComparable<T>
    {
        using (var iterator = source.GetEnumerator())
        {
            if (!iterator.MoveNext())
            {
                throw new InvalidOperationException("Cannot find min/max of an empty sequence.");
            }

            var result = (min: iterator.Current, max: iterator.Current);
            while (iterator.MoveNext())
            {
                if (iterator.Current.CompareTo(result.min) < 0) result.min = iterator.Current;
                if (iterator.Current.CompareTo(result.max) > 0) result.max = iterator.Current;
            }
            return result;
        }
    }
}

Pretty nice, right?!

class Program
{
    static void Main(string[] args)
    {
        var sequence = Enumerable.Range(10, 1000000);
        var minmax = sequence.MinMax();
        Console.WriteLine($"Min: {minmax.min} Max: {minmax.max}");
    }
}

That’s it.

Compartilhe este insight:

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Mais insights para o seu negócio

Veja mais alguns estudos e reflexões que podem gerar alguns insights para o seu negócio:

Are you interested to know more about the internals of the .NET Runtime? So you should spend some time reading...
Há muito valor em saber como fazer as coisas. Entretanto, antes, é preciso saber o porquê. Conheço excelentes profissionais, profundos...
Em minha experiência, a inovação acontece a partir de um dos seguintes gatilhos: A área de negócios identifica uma demanda...
[tweet]Aprenda comigo técnicas de modelagem de bancos de dados de documentos NoSQL e a utilizar o RavenDB[/tweet] – um dos...
Recebi um bocado de feedback positivo para minhas palestras no Devxperience deste ano. Muita gente mandou e-mails solicitando, principalmente, os...
Como um programador experiente, você precisa lidar com ocorrências NullReferenceException todos os dias. Certo? Eu defendo que este é um...