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

C# TakeWhile() 메서드 완벽 정리 – 조건에 맞는 요소만 추출하는 방법

C# LINQ에서 제공하는 TakeWhile() 메서드를 사용하면 조건자(Predicate)를 기반으로 조건을 설정하고, 그 조건이 참인 동안 시퀀스의 처음부터 요소를 순서대로 가져올 수 있습니다.

주의할 점은, TakeWhile()은 조건을 만족하지 않는 첫 번째 요소를 만나는 순간 반복을 중단한다는 것입니다. 즉, 배열 전체를 검사하는 것이 아니라 앞부분에서 연속적으로 조건을 만족하는 요소들만 반환합니다.

기본 사용 예시

먼저 배열을 선언하고 초기화합니다.

int[] arr = { 25, 40, 65, 70 };

이제 TakeWhile() 메서드와 람다식(조건자)을 활용해 30보다 작은 요소들을 가져와 보겠습니다.

var val = arr.TakeWhile(ele => ele < 30);

전체 예제 코드

다음은 조건자를 사용해 30 미만인 값을 화면에 출력하는 전체 코드입니다.

using System;
using System.Linq;
using System.IO;

public class Demo {
    public static void Main() {
        int[] arr = { 25, 40, 65, 70 };

        var val = arr.TakeWhile(ele => ele < 30);

        foreach (int res in val) {
            Console.WriteLine(res);
        }
    }
}

실행 결과

25

결과 분석

출력 결과가 25 하나뿐인 이유는 다음과 같습니다.

  • 첫 번째 요소 25는 30보다 작으므로 조건을 만족하여 결과에 포함됩니다.
  • 두 번째 요소 40은 30보다 크므로 조건을 만족하지 않고, 이 순간 TakeWhile()은 더 이상 진행하지 않고 종료됩니다.

따라서 뒤에 있는 65, 70처럼 조건과 무관한 값들이 있더라도 검사 대상에서 제외됩니다. 만약 배열 전체에서 조건을 만족하는 모든 요소를 찾고 싶다면 Where() 메서드를 사용하는 것이 적합합니다.