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

C# 조건자(Predicate)로 배열 요소를 필터링하는 방법

C#에서는 LINQ의 Where 절람다 식(조건자)을 조합하면 배열이나 컬렉션에서 특정 조건을 만족하는 요소만 손쉽게 추출할 수 있습니다. 이번 글에서는 정수 배열에서 50 이상인 값만 필터링하는 예제를 단계별로 살펴보겠습니다.

1. 배열 선언하기

먼저 필터링할 대상이 되는 배열을 선언합니다.

int[] arr = { 40, 42, 12, 83, 75, 40, 95 };

2. Where 절과 조건자로 필터링

배열에 AsQueryable()을 호출한 뒤 Where 절에 람다 식 형태의 조건자를 전달하면, 조건을 만족하는 요소들만 담은 시퀀스를 얻을 수 있습니다.

IEnumerable<int> myQuery = arr.AsQueryable().Where((a, index) => a >= 50);

여기서 람다 식 (a, index) => a >= 50은 각 요소 값 a가 50 이상인지 검사하는 조건자 역할을 합니다. 두 번째 매개변수 index는 현재 요소의 인덱스를 나타내며, 필요하지 않다면 생략해도 무방합니다.

전체 코드 예제

using System;
using System.Linq;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        int[] arr = { 40, 42, 12, 83, 75, 40, 95 };
        Console.WriteLine("Array:");
        foreach (int a in arr) {
            Console.WriteLine(a);
        }
        // 50 이상인 요소만 추출
        IEnumerable<int> myQuery = arr.AsQueryable().Where((a, index) => a >= 50);
        Console.WriteLine("Elements above 50...:");
        foreach (int res in myQuery) {
            Console.WriteLine(res);
        }
    }
}

실행 결과

Array:
40
42
12
83
75
40
95
Elements above 50...:
83
75
95

정리

위 예제처럼 Where 절에 원하는 조건식을 넣어주기만 하면 별도의 반복문 없이도 깔끔하게 데이터를 필터링할 수 있습니다. 조건을 a >= 70, a % 2 == 0 등으로 바꾸면 다양한 기준으로 요소를 걸러낼 수 있으니, 실무에서 자주 활용해 보시기 바랍니다.