Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# LINQ ElementAt() 메서드 완벽 가이드 – 특정 인덱스의 요소 가져오기

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()와 함께 활용하는 것이 좋습니다.