상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - C#의 LINQ에서 Distinct의 사용법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
C 의 <a href='https://sangseek.com/sangseeks/LINQ/ko'>LINQ</a>(언어 통합 쿼리)는 데이터 소스에 대한 쿼리를 작성할 수 있는 강력한 기능을 제공합니다. LINQ의 다양한 메서드 중 하나인 `Distinct`는 컬렉션에서 중복된 요소를 제거하고 고유한 요소만을 반환하는 데 사용됩니다. 이 메서드는 특히 데이터 집합에서 중복을 처리해야 할 때 유용합니다. Distinct 메서드의 기본 사용법 `Distinct` 메서드는 `System.Linq` 네임스페이스에 정의되어 있으며, <a href='https://sangseek.com/sangseeks/IEnumerable<T>/ko'>IEnumerable<T></a> 인터페이스를 구현하는 모든 컬렉션에서 사용할 수 있습니다. 기본적인 사용법은 다음과 같습니다. ```csharp using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { List<int> numbers = new List<int> { 1, 2, 2, 3, 4, 4, 5 }; IEnumerable<int> distinctNumbers = numbers.Distinct(); foreach (int number in distinctNumbers) { Console.WriteLine(number); } } } ``` 위의 예제에서 `numbers` 리스트에는 중복된 값이 포함되어 있습니다. `Distinct` 메서드를 호출하면 중복된 값이 제거된 새로운 컬렉션이 반환됩니다. 출력 결과는 다음과 같습니다. ``` 1 2 3 4 5 ``` 사용자 정의 객체에서 Distinct 사용하기 `Distinct` 메서드는 기본 데이터 타입뿐만 아니라 사용자 정의 객체에서도 사용할 수 있습니다. 그러나 이 경우 객체의 동등성을 정의해야 합니다. 기본적으로 `Distinct`는 객체의 참조를 비교하므로, 두 객체가 동일한지 판단하기 위해 `IEquatable<T>` 인터페이스를 구현하거나 `Equals` 및 `GetHashCode` 메서드를 오버라이드해야 합니다. 예를 들어, 다음과 같은 `Person` 클래스를 정의할 수 있습니다. ```csharp public class Person { public string Name { get; set; } public int Age { get; set; } public override bool Equals(object obj) { if (obj is Person other) { return this.Name == other.Name && this.Age == other.Age; } return false; } public override int GetHashCode() { return HashCode.Combine(Name, Age); } } ``` 이제 `Person` 객체의 리스트에서 중복된 요소를 제거할 수 있습니다. ```csharp List<Person> people = new List<Person> { new Person { Name = "Alice", Age = 30 }, new Person { Name = "Bob", Age = 25 }, new Person { Name = "Alice", Age = 30 }, // 중복 }; IEnumerable<Person> distinctPeople = people.Distinct(); foreach (var person in distinctPeople) { Console.WriteLine($"{person.Name}, {person.Age}"); } ``` 위의 코드에서 `Alice`가 두 번 나타나지만, `Distinct` 메서드를 사용하여 중복된 객체를 제거할 수 있습니다. 커스텀 비교자를 사용한 Distinct 사용자 정의 객체의 경우, `IEqualityComparer<T>` 인터페이스를 구현하여 커스텀 비교자를 제공할 수도 있습니다. 이를 통해 `Distinct` 메서드에 사용자 정의 비교 로직을 적용할 수 있습니다. ```csharp public class PersonComparer : IEqualityComparer<Person> { public bool Equals(Person x, Person y) { if (x == null || y == null) return false; return x.Name == y.Name && x.Age == y.Age; } public int GetHashCode(Person obj) { return HashCode.Combine(obj.Name, obj.Age); } } // 사용 예 IEnumerable<Person> distinctPeopleWithComparer = people.Distinct(new PersonComparer()); ``` 이렇게 하면 `PersonComparer`를 사용하여 `Distinct` 메서드가 중복을 판단하게 됩니다. 요약 C 의 LINQ에서 `Distinct` 메서드는 중복된 요소를 제거하고 고유한 요소만을 반환하는 데 유용한 도구입니다. 기본 데이터 타입뿐만 아니라 사용자 정의 객체에서도 사용할 수 있으며, 이 경우 객체의 동등성을 정의하는 것이 중요합니다. `IEqualityComparer<T>`를 사용하여 커스텀 비교자를 제공함으로써 더욱 유연한 중복 제거 로직을 구현할 수 있습니다. LINQ의 `Distinct` 메서드는 데이터 처리 및 쿼리 작성 시 매우 유용한 기능으로, 다양한 상황에서 활용될 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기