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 등으로 바꾸면 다양한 기준으로 요소를 걸러낼 수 있으니, 실무에서 자주 활용해 보시기 바랍니다.