300x250

C#에서 리스트나 배열에서 조건에 맞는 데이터를 걸러낼 때 가장 많이 쓰는 게 바로 LINQ의 Where() 메서드다.
예를 들어 "짝수만 뽑기", "활성화된 유저만 가져오기" 같은 상황에서 매우 유용하다. 이번에는 Where 사용법을 기초부터 정리하고 실제로 자주 쓰이는 LINQ 필터링 예제와 함께 헷갈리는 지연 실행(Lazy Evaluation) 개념까지 한 번에 정리해봤다.
📚 목차
- LINQ Where절이란?
- 기본 문법
- 실전 예제: 리스트 필터링
- 지연 실행(Lazy Evaluation)이란?
- Where와 유사한 LINQ 메서드 비교
1. LINQ Where절이란?
Where()
는 LINQ에서 제공하는 필터링 함수로, 조건에 맞는 데이터를 골라내고 싶을 때 사용한다.
var even = numbers.Where(n => n % 2 == 0);
=>
는 람다식이며, n이 짝수인지 조건으로 필터링한다. 람다식이 처음이라면 이전 글: 람다식이란?도 참고하자.
2. 기본 문법
var 결과 = 컬렉션.Where(조건식);
- 컬렉션: List, Array, IEnumerable 등
- 조건식: 람다식을 통해 true/false 판별
var even = numbers.Where(n => n % 2 == 0).ToList(); //짝수만 필터링
.ToList()
를 붙이지 않으면 지연 실행 상태이므로, 바로 결과가 필요한 경우 꼭 붙여주자.
3. 실전 예제: 리스트 필터링
✅ 예제 1. 숫자 리스트에서 짝수만 추출
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
✅ 예제 2. 사용자 리스트에서 활성 사용자만 가져오기
public class User
{
public string Name { get; set; }
public bool IsActive { get; set; }
}
var users = new List<User>
{
new User { Name = "홍길동", IsActive = true },
new User { Name = "김철수", IsActive = false }
};
var activeUsers = users.Where(u => u.IsActive).ToList();
조건만 다르게 주면 다양한 필터링이 가능하다.
4. 지연 실행(Lazy Evaluation)이란?
LINQ의 Where는 지연 실행 방식이다. 즉, Where()
자체는 조건을 등록만 해두고, 나중에 실제로 사용할 때 실행된다.
예:
var result = numbers.Where(n => n > 3); // 아직 실행 X
numbers.Add(100); // 컬렉션 변경
foreach (var n in result) // 여기서 실행됨!
{
Console.WriteLine(n); // 4, 5, 6, 100
}
즉시 실행이 필요하다면 .ToList()
또는 .ToArray()
를 붙이자.
5. Where와 유사한 LINQ 메서드 비교
메서드 | 설명 |
---|---|
Where() |
조건에 맞는 항목 여러 개 필터링 |
First() |
첫 번째 조건 일치 항목 반환 (없으면 예외) |
FirstOrDefault() |
첫 번째 조건 일치 항목 또는 null 반환 |
Any() |
하나라도 조건 만족하는 항목이 있는지 확인 |
All() |
모든 항목이 조건을 만족하는지 확인 |
Where()
는 LINQ의 핵심 필터링 메서드다. 조건만 잘 지정하면 데이터 가공, 필터링, 검색 등에 매우 유용하게 사용 가능한 필수 메서드로 꼭 알아 둘 것!
300x250
'Languague > C#' 카테고리의 다른 글
[C# LINQ] 중복된 값으로 리스트 묶기 – GroupBy 사용법(Group By 여러개) (0) | 2025.04.02 |
---|---|
[C#] LINQ Select vs SelectMany 완전 정리 (차이점, 예제) (0) | 2025.04.01 |
[C#] 람다식(Lambda Expression)이란? (익명 함수, 델리게이트, => 사용법) (0) | 2025.03.30 |
[C#] Any(), All(), Exists() 사용법 요소 null 체크 (2) | 2024.03.14 |
[C#] LINQ First, FirstOfDefault 사용법 첫번째 요소 가져오기 (1) | 2024.03.12 |