300x250

목차
- Contains()는 언제 쓰나?
- Any()는 어떤 상황에서 좋을까?
- Join으로 리스트 비교하기
- Contains vs Any vs Join – 언제 뭘 써야 할까?
- 자주 나는 오류들 정리
1. Contains()는 언제 쓰나?
Contains()
는 리스트에 특정 값이 포함되어 있는지 확인할 때 사용된다.
var ids = new List<int> { 1, 3, 5 };
bool exists = ids.Contains(3);
✔ 결과: true
📌 실무 예제
var allowedRoles = new List<string> { "Admin", "Manager" };
if (allowedRoles.Contains(user.Role))
{
Console.WriteLine("접근 허용!");
}
→ 간단한 값 비교에는 Contains가 제일 편해요.
2. Any()는 어떤 상황에서 좋을까?
Any()
는 리스트 안에서 조건을 만족하는 항목이 하나라도 있으면 true를 반환한다.
var users = new List<User> {
new User { Name = "철수", Age = 25 },
new User { Name = "영희", Age = 31 }
};
bool hasAdult = users.Any(u => u.Age >= 30);
✔ 결과: true
(영희는 31세니까!)
🧾 실제로는 자식 컬렉션 안에 원하는 게 있는지 볼 때 좋다!
if (order.Items.Any(i => i.ProductId == 101))
{
Console.WriteLine("해당 상품이 포함되어 있음!");
}
3. Join으로 리스트 비교하기
두 리스트를 비교해서 겹치는 값만 보고 싶을 때 Join()
을 쓴다.
var listA = new List<int> { 1, 2, 3 };
var listB = new List<int> { 2, 3, 4 };
var common = listA.Join(listB, a => a, b => b, (a, b) => a).ToList();
foreach (var item in common)
{
Console.WriteLine(item);
}
2
3
→ 두 리스트에 모두 있는 값만 추출된다
4. 언제 어떤 걸 써야 할까?
- 값 리스트 포함 여부 →
Contains()
- 조건 만족 여부 →
Any()
- 두 리스트 비교 →
Join()
성능 팁
Contains()
에 큰 리스트 넣으면 느려질 수 있다. 그럴 땐 HashSet
으로 변경 가능하다.
var idSet = new HashSet<int>(ids);
if (idSet.Contains(someId)) { ... }
5. 자주 나는 오류들 정리
❌ ArgumentNullException
List<int> numbers = null;
bool check = numbers.Contains(3); // 여기서 오류!
→ 리스트가 null이면 Contains, Any, Join 다 터집니다. null 체크는 무조건 필수!
❌ NullReferenceException
if (order.Items.Any(i => i.Name.Contains("상품")))
{
// Items가 null이면 여기서 터짐
}
→ order.Items ?? new List<Item>()
이렇게 처리하면 예방된다.
✅ 마무리 요약
- Contains() – "그 값이 있나?" → 제일 간단
- Any() – "조건 맞는 항목 있나?" → 유연하게 쓰기 좋아요
- Join() – "두 리스트 비교해서 겹치는 거 뽑고 싶을 때"
300x250
'Languague > C#' 카테고리의 다른 글
[C# LINQ] 페이징 처리 – Skip, Take vs ToPagedList 성능 비교 (0) | 2025.05.02 |
---|---|
[C# LINQ] 즉시 실행 vs 지연 실행 – Deferred vs Immediate Execution (0) | 2025.05.01 |
[C# LINQ] 정렬 + 조건 필터 사용법 및 MaxBy/MinBy (InvalidOperationException, NullReferenceException 해결법) (0) | 2025.04.13 |
[C# LINQ] 중복 제거하면서 조건 유지하기 – DistinctBy 사용법 & 중복 키 오류 해결 포함 (0) | 2025.04.12 |
[C# LINQ] Join vs GroupJoin 차이점 (0) | 2025.04.10 |