Как работает Tuple в LINQ?

решал вот такое вот задание по сортировке, смысл в том, что дан список слов, нужно найти самое длинное слово из этого списка, а из всех самых длинных — лексикографически первое слово.

Задание я решил, но не совсем пониманию, как Tuple отрабатывает с LINQ и почему сложность такой конструкции O(N) в отличии от сортировки O( N * logN)

Можете рассказать как это происходит поподробнее или дать ссылку статью/книгу, где это было бы разъяснено?

    public static void Main()
    {
        Console.WriteLine(GetLongest(new[] { "azaz", "as", "sdsd" }));
        Console.WriteLine(GetLongest(new[] { "zzzz", "as", "sdsd" }));
        Console.WriteLine(GetLongest(new[] { "as", "12345", "as", "sds" }));

        Console.ReadKey();
    }

    public static string GetLongest(IEnumerable<string> words)
    {
        return words.Min(w => (-w.Length, w)).w;
    }

Ответы (0 шт):