C#에서 리스트를 사용하면서 중복을 제거해야 할 경우가 종종 발생합니다. 이때 Disctinct() 함수를 사용함으로써, 중복된 값을 제거하고 고유한 값만을 가질 수 있습니다. 그럼 Distinct 함수에 대하여 알아보도록 하겠습니다.
C# 리스트 중복 요소 제거 - DISTINCT, LINQ
1. DISTINCT()
- 리스트에서 중복 요소들을 제거하는 방법으로 Distinct 함수를 사용합니다. 이때 반환되는 값으로는 Enumerable 요소들을 반환하고, ToList()를 통하여 리스트로 변환하실 수 있습니다.
- list.Distinct().ToList();
// 리스트의 중복된 요소들을 제거하는 예제
List<string> list = new List<string>();
list.Add("츠라구");
list.Add("김길동");
list.Add("박지운");
list.Add("츠라구");
list.Add("송명순");
// 중복 제거
list = list.Distinct().ToList();
foreach(string str in list)
{
Console.WriteLine(str);
}
// 결과
츠라구
김길동
박지운
송명순
위와 같이 "츠라구"라는 중복된 요소를 제거한 결과를 확인하실 수 있습니다.
2. LINQ
- Distinct와 같은 경우에는 단일 데이터(int, string, boolean 등)만을 중복 제거하는 데 사용하는 함수이며, 단일 데이터가 아닌 경우에는 중복값을 제거하기 위하여 LINQ를 사용해야 합니다.
// 단일 데이터가 아닌 리스트 중복 제거
// 구조체 선언
struct Example
{
public Example(int n, string str)
{
age = n;
name = str;
}
int age;
string name;
};
// LINQ 사용
List<Example> list = new List<Example>();
list.Add(new Example(20, "츠라구"));
list.Add(new Example(19, "송명순"));
list.Add(new Example(20, "츠라구"));
list.Add(new Example(12, "박성준"));
list.Add(new Example(25, "박천우"));
List<Example> result = null;
var var_result = (from name in list select name).Distinct();
result = var_set.ToList();
foreach(Example ex in list)
{
Console.WriteLine(string.Format("이름 : {0}, 나이 : {1}", ex.name, ex.age));
}
// 결과
이름 : 츠라구, 나이 : 20
이름 : 송명순, 나이 : 19
이름 : 박성준, 나이 : 12
이름 : 박천우, 나이 : 25
이번에는 C#에서 리스트에서 중복 요소를 제거하는 Distinct(), LINQ 두 가지 방법에 대하여 알아보았습니다. 단일 데이터가 아닐 때 많은 어려움이 있으셨던 분들께서는 LINQ의 사용이 많은 도움이 되셨으면 좋겠습니다.
MSDN 참고 자료 - https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.distinct?view=net-7.0
'C#' 카테고리의 다른 글
[C#] double to int 형변환 (0) | 2023.01.13 |
---|---|
C# 파일(File) 존재유무 확인 방법 (0) | 2023.01.11 |
C# 디렉토리(폴더)가 존재유무 확인 방법 (0) | 2023.01.10 |
Visual Studio, C# 사용 시 영문 입력 간격이 이상할 때 (0) | 2022.12.27 |
C# Visual Studio 개발 툴 환경 설정 및 프로젝트 생성 방법 (0) | 2022.12.16 |
댓글