[c#] C# yield 키워드와 데이터 쿼리

요즘의 어플리케이션은 대용량 데이터를 다루는 것이 일반적입니다. 대용량 데이터를 다룰 때 메모리 효율성을 고려해야 하는데, C#에서는 yield 키워드를 사용하여 메모리 사용량을 최적화할 수 있습니다. 또한, yield 키워드는 LINQ(언어 내 데이터 질의)와 함께 사용하여 데이터를 효율적으로 처리할 수 있는 기능을 제공합니다.

yield 키워드

yield 키워드를 사용하면 지연된(lazy) 데이터 반환이 가능합니다. 이것은 데이터를 필요할 때마다 생성하여 메모리 사용량을 최소화하는 방법입니다.

예를 들어, 다음은 yield 키워드를 사용하여 짝수를 차례로 반환하는 메서드의 예시입니다.

public IEnumerable<int> GetEvenNumbers(int max)
{
    for (int i = 0; i <= max; i += 2)
    {
        yield return i;
    }
}

위의 코드에서 yield return을 사용하여 GetEvenNumbers 메서드를 호출할 때마다 짝수를 생성하여 반환합니다. 이는 모든 짝수를 한 번에 생성하는 것이 아니라 필요할 때마다 반환하므로, 메모리를 절약할 수 있습니다.

데이터 쿼리

LINQ를 통해 yield 키워드를 사용하여 데이터를 질의할 수 있습니다. LINQ는 SQL과 비슷한 구문 구조를 사용하여 데이터를 쿼리할 수 있게 해줍니다.

아래는 LINQ를 사용하여 List<int>에 있는 짝수를 필터링하는 예시입니다.

List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

var evenNumbers = from number in numbers
                  where number % 2 == 0
                  select number;

위 코드에서 from, where, select 등의 키워드를 사용하여 데이터를 필터링하고 원하는 결과를 얻을 수 있습니다.

이렇게 yield 키워드와 데이터 질의를 조합하면 대용량 데이터를 메모리를 효율적으로 처리할 수 있습니다. 이를 통해 성능과 가독성을 동시에 향상시킬 수 있습니다.

위의 예시를 참고하여, yield 키워드와 LINQ를 사용하여 데이터를 효율적으로 처리할 때의 장점에 대해 더 자세히 알아보시기를 권장합니다.

MS Docs - yield return MS Docs - LINQ