Предположим, у меня есть список элементов (например, сообщений), и я хочу найти первый элемент согласно некоторому нетривиальному порядку (например, PublishDate и затем CommentsCount в качестве тай-брейка).
Естественный способ сделать это с помощью LINQ выглядит следующим образом:
posts.OrderBy(post => post.PublishDate).ThenBy(post => post.CommentsCount).First()
Однако мой микрооптимизатор обеспокоен тем, что вызов OrderBy на самом деле стоит мне O (n * lgn) за сортировку всего списка, когда все, что мне действительно нужно, - это операция O (n) с минимальным поиском.
Итак, достаточно ли LINQ для того, чтобы возвращать что-то из OrderBy (), которое знает, как оптимизировать последующие вызовы First ()? Если нет, то какой лучший способ сделать это из коробки? (Я всегда могу написать свою собственную реализацию FindMinimumItem, но это кажется излишним).