C#에서 LINQ의 Where 조건문을 여러 개 사용하는 방법을 배우고, 다양한 예제와 실제 사용 사례를 통해 효과적으로 데이터를 필터링하는 방법을 알아봅니다.
목차
- LINQ의 Where 조건문이란?
- Where 조건문 여러 개 사용하는 방법
- 단일 Where에서 여러 조건 사용
- 여러 Where 메서드 사용
- 람다 표현식과 Where 조건문 조합
- 동적으로 조건을 추가하는 방법
- 실제 사용 사례 및 예제 코드
- 마무리 및 최적화 팁
1. LINQ의 Where 조건문이란?
C# LINQ의 Where 메서드는 컬렉션에서 특정 조건을 만족하는 요소만 필터링하는 데 사용됩니다. 여러 조건을 적용해야 할 때는 다양한 방법을 활용할 수 있으며, 성능을 고려한 최적화가 중요합니다.
2. Where 조건문 여러 개 사용하는 방법
2.1 단일 Where에서 여러 조건 사용
가장 간단한 방법은 && 연산자를 사용하여 여러 조건을 한 번에 적용하는 것입니다.
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbersGreaterThanFive = numbers
.Where(n => n % 2 == 0 && n > 5) // 짝수이면서 5보다 큰 수 필터링
.ToList();
Console.WriteLine(string.Join(", ", evenNumbersGreaterThanFive)); // 출력: 6, 8, 10
}
}
2.2 여러 Where 메서드 사용
Where 메서드를 여러 개 사용하여 조건을 분리할 수도 있습니다. 이 방식은 코드 가독성을 높이는 데 유용합니다.
var result = numbers
.Where(n => n % 2 == 0) // 짝수 필터링
.Where(n => n > 5) // 5보다 큰 수 필터링
.ToList();
3. 람다 표현식과 Where 조건문 조합
람다 표현식을 활용하면 더욱 유연한 필터링이 가능합니다.
Func<int, bool> isEven = n => n % 2 == 0;
Func<int, bool> isGreaterThanFive = n => n > 5;
var filteredNumbers = numbers
.Where(isEven)
.Where(isGreaterThanFive)
.ToList();
4. 동적으로 조건을 추가하는 방법
조건이 동적으로 변경될 경우, IQueryable을 활용하여 조건을 추가할 수 있습니다.
var query = numbers.AsQueryable();
if (true) // 예제에서는 항상 true지만, 조건에 따라 다르게 설정 가능
{
query = query.Where(n => n % 2 == 0);
}
if (true) // 조건 추가
{
query = query.Where(n => n > 5);
}
var result = query.ToList();
5. 실제 사용 사례 및 예제 코드
5.1 객체 리스트 필터링
다음은 여러 개의 Where 조건을 사용하여 특정 데이터를 필터링하는 예제입니다.
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
List<Person> people = new List<Person>
{
new Person { Name = "이명연", Age = 28 },
new Person { Name = "홍승익", Age = 28 },
new Person { Name = "전지은", Age = 31 },
new Person { Name = "신중빈", Age = 31 }
};
var filteredPeople = people
.Where(p => p.Age >= 30) // 30세 이상
.Where(p => p.Name.StartsWith("이")) // 이름이 'C'로 시작
.ToList();
foreach (var person in filteredPeople)
{
Console.WriteLine($"{person.Name}, {person.Age}");
}
}
}
5.2 데이터베이스 조회 시 활용 (Entity Framework)
Entity Framework에서 LINQ의 Where 조건을 여러 개 사용하는 예제입니다.
using (var context = new MyDbContext())
{
var query = context.Users.AsQueryable();
if (true) // 예제 조건
{
query = query.Where(u => u.IsActive);
}
if (true) // 나이 필터
{
query = query.Where(u => u.Age >= 18);
}
var result = query.ToList();
}
이런 방식으로 데이터베이스 쿼리를 동적으로 구성할 수 있습니다.
6. 마무리 및 최적화 팁
- Where 조건을 너무 많이 분리하면 성능 저하가 발생할 수 있습니다.
- IQueryable을 사용하면 필요할 때만 필터링이 적용되므로 성능이 향상됩니다.
- 조건을 미리 변수로 선언하여 코드의 가독성을 높일 수 있습니다.
- 불필요한 Where 메서드는 제거하고, 최대한 한 번의 Where로 처리하는 것이 좋습니다.
이제 LINQ의 Where 조건을 여러 개 사용할 때 어떤 방법이 가장 적절한지 이해하셨을 것입니다. 필요에 따라 적절한 방식으로 LINQ를 활용하여 효율적인 데이터를 필터링해 보세요!
'C#' 카테고리의 다른 글
C# int.Parse() 사용 시 발생하는 예외와 해결 방법 (FormatException, OverflowException) (0) | 2025.03.20 |
---|---|
C#에서 String을 Int로 변환하는 4가지 방법 (TryParse, Parse, Convert, System.Globalization) (0) | 2025.03.20 |
[C#] 리스트 중복 요소 제거 (Distinct, LINQ) (0) | 2023.07.17 |
[C#] double to int 형변환 (0) | 2023.01.13 |
C# 파일(File) 존재유무 확인 방법 (0) | 2023.01.11 |
댓글