C#의 ElementAt() 메서드는 시퀀스(컬렉션)에서 지정된 인덱스 위치에 있는 요소를 가져올 때 사용하는 LINQ 연산자입니다. 배열이나 리스트처럼 순서가 있는 데이터에서 원하는 위치의 값을 손쉽게 추출할 수 있습니다.
ElementAt() 메서드의 기본 개념
ElementAt()는 0부터 시작하는 인덱스를 매개변수로 받아 해당 위치의 요소를 반환합니다. 만약 인덱스가 컬렉션의 범위를 벗어나면 ArgumentOutOfRangeException 예외가 발생하므로 주의해야 합니다.
먼저 문자열 배열을 하나 설정해 보겠습니다.
string[] str = { "Jack", "Pat", "David" };ElementAt() 활용 예제
다음 예제에서는 무작위로 생성된 인덱스를 사용해 배열에서 임의의 이름을 선택하는 방법을 보여줍니다.
using System.IO;
using System;
using System.Linq;
class Program {
static void Main() {
string[] str = { "Jack", "Pat", "David" };
Random r = new Random(DateTime.Now.Second);
// 무작위 문자열 생성
string res = str.AsQueryable().ElementAt(r.Next(0, str.Length));
Console.WriteLine("Random Name = '{0}'", res);
}
}실행 결과
Random Name = 'Jack'
위 코드에서 r.Next(0, str.Length)는 0부터 2 사이의 난수를 생성하고, ElementAt()은 그 인덱스에 해당하는 이름을 반환합니다. 실행할 때마다 'Jack', 'Pat', 'David' 중 하나가 무작위로 출력됩니다.
참고: ElementAtOrDefault() 메서드
인덱스가 범위를 벗어날 가능성이 있다면 ElementAtOrDefault() 메서드를 사용하는 것이 안전합니다. 이 메서드는 유효하지 않은 인덱스가 전달되면 예외를 던지는 대신 해당 타입의 기본값(예: 참조 타입의 경우 null)을 반환합니다.
string result = str.ElementAtOrDefault(10); // 범위 초과 시 null 반환
정리
ElementAt() 메서드는 인덱스 기반으로 컬렉션의 요소에 접근할 때 유용하며, 쿼리 결과에서 특정 위치의 값을 가져오는 시나리오에서 특히 강력합니다. 다만 범위를 벗어난 인덱스에 대한 예외 처리를 위해 상황에 맞게 ElementAtOrDefault()와 함께 활용하는 것이 좋습니다.