Это зависит от типа списка underyling. Отражатель показывает, что Enumerable<T>.ElementAt(...)
сначала пытается привести к IList<T>
. В этом случае это будет O (1).
Поставщик запросов, например, может вернуть что-то, что IList<T>
. Но есть вероятность, что если вы примените какой-либо из операторов Linq, он превратится в IEnumerable<T>
, потому что они построены просто с использованием различных перечислителей, и он станет O (n).
РЕДАКТИРОВАТЬ: я перечитал HashSet
. A HashSet<T>
не реализует IList<T>
, поэтому это O (n).