C# 프로그래밍에서 리스트(List)에 담긴 데이터 중 특정 조건을 만족하는 요소를 찾아야 하는 경우가 자주 있습니다. 이럴 때 유용하게 쓰이는 것이 바로 Find() 메서드입니다. 이번 글에서는 리스트 선언부터 조건 검색까지 실제 예제를 통해 자세히 살펴보겠습니다.
리스트 설정하기
먼저 정수형 리스트를 하나 생성해 보겠습니다.
List<int> myList = new List<int>() {
5,
10,
17,
19,
23,
33
};
Find() 메서드로 조건에 맞는 요소 검색
이번 예제에서는 리스트에서 2로 나누어떨어지는(짝수) 요소를 찾아보겠습니다. 이때 Find() 메서드에 람다 식(Lambda Expression)을 전달하면 간단하게 해결할 수 있습니다.
int val = myList.Find(item => item % 2 == 0);
Find() 메서드는 지정한 조건자(Predicate)와 일치하는 첫 번째 요소를 반환합니다. 위 코드에서 item => item % 2 == 0이라는 람다 식은 각 요소가 2로 나누어떨어지는지 여부를 판별하며, 조건을 처음 만족하는 값인 10이 결과로 반환됩니다.
전체 코드
using System;
using System.Collections.Generic;
using System.Linq;
class Demo {
static void Main() {
List<int> myList = new List<int>() {
5,
10,
17,
19,
23,
33
};
Console.WriteLine("List: ");
foreach(int i in myList) {
Console.WriteLine(i);
}
int val = myList.Find(item => item % 2 == 0);
Console.WriteLine("2로 나누어떨어지는 첫 번째 요소: " + val);
}
}
실행 결과
List: 5 10 17 19 23 33 2로 나누어떨어지는 첫 번째 요소: 10
추가로 알아두면 좋은 메서드
Find() 외에도 상황에 따라 다양한 검색 메서드를 활용할 수 있습니다.
- FindAll(): 조건을 만족하는 모든 요소를 새 리스트로 반환합니다.
- FindIndex(): 조건에 일치하는 요소의 인덱스를 반환합니다.
- Where() / FirstOrDefault(): LINQ를 사용한 방식으로, 더 복잡한 쿼리 조건에 적합합니다.
단순히 첫 번째 일치 요소만 필요하다면 Find()가 성능 면에서 효율적이며, 여러 개의 결과가 필요하거나 추가 필터링이 필요하다면 LINQ 메서드를 함께 고려해 보시기 바랍니다.