[c#] C# 이터레이터와 데이터 필터링
C#에서 이터레이터(iterator)는 컬렉션, 배열 또는 사용자가 정의한 데이터 소스에서 데이터를 반복적으로 얻을 수 있는 블록을 만들 수 있는 기능입니다. 데이터 필터링은 이러한 이터레이터를 사용하여 원하는 데이터만을 선택할 수 있는 유용한 패턴입니다.
이터레이터를 사용하여 데이터 필터링
일반적으로 yield
키워드와 함께 사용되는 이터레이터 함수는 데이터 소스에서 값을 가져오고 필터링하는 데 사용됩니다. 아래는 C#에서 이터레이터 함수를 사용하여 데이터를 필터링하는 간단한 예제입니다.
public IEnumerable<int> FilterNumbers(IEnumerable<int> numbers, Func<int, bool> filter)
{
foreach (int number in numbers)
{
if (filter(number))
{
yield return number;
}
}
}
위의 예제에서 Func<int, bool>
델리게이트를 사용하여 필터 기준을 정의합니다. FilterNumbers
함수는 numbers
컬렉션에서 필터 함수에 따라 값을 선택하여 새로운 컬렉션을 반환합니다.
예제
다음은 FilterNumbers
함수를 사용하여 짝수만을 필터링하는 간단한 예제입니다.
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = FilterNumbers(numbers, x => x % 2 == 0);
foreach (int number in evenNumbers)
{
Console.WriteLine(number);
}
위의 예제는 numbers
리스트에서 짝수만을 필터링하여 evenNumbers
에 저장하고 각각의 값을 출력합니다.
결론
C#의 이터레이터는 데이터 필터링을 위한 강력한 도구로 활용될 수 있습니다. 이터레이터를 사용하여 데이터를 필터링 및 가공함으로써 코드의 가독성과 성능을 향상시킬 수 있습니다.
이는 데이터 관리 및 처리에 있어서 중요한 패턴 중 하나이며, C#에서는 이를 구현하기 위한 강력한 기능들을 제공하고 있습니다.
참고문헌:
- https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/iterators
- https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield