ElementAt
will return the item at index n
. If n
is not within the range of the enumerable, throws an ArgumentOutOfRangeException
.
int[] numbers = { 1, 2, 3, 4, 5 };
numbers.ElementAt(2); // 3
numbers.ElementAt(10); // throws ArgumentOutOfRangeException
ElementAtOrDefault
will return the item at index n
. If n
is not within the range of the enumerable, returns a default(T)
.
int[] numbers = { 1, 2, 3, 4, 5 };
numbers.ElementAtOrDefault(2); // 3
numbers.ElementAtOrDefault(10); // 0 = default(int)
Both ElementAt
and ElementAtOrDefault
are optimized for when the source is an IList<T>
and normal indexing will be used in those cases.
Note that for ElementAt
, if the provided index is greater than the size of the IList<T>
, the list should (but is technically not guaranteed to) throw an ArgumentOutOfRangeException
.