> 백엔드 개발 > C++ > C#에서 람다 표현식을 사용하여 고유 목록을 효율적으로 생성하려면 어떻게 해야 합니까?

C#에서 람다 표현식을 사용하여 고유 목록을 효율적으로 생성하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2025-01-25 22:51:10
원래의
223명이 탐색했습니다.

How Can I Efficiently Create a Distinct List Using Lambda Expressions in C#?

람다 표현식을 사용하여 Distinct() 메서드 사용자 정의

열거 가능한 객체를 다룰 때 고유한 값을 구별해야 하는 경우가 많습니다. System.Linq 네임스페이스는 Distinct() 확장 메서드를 제공하지만 객체 동등성을 지정하기 위해 Lambda 식을 허용하는 오버로드가 부족합니다.

문제

Lambda 표현식을 기반으로 한 오버로드가 없기 때문에 프로그래머는 Equals() 및 GetHashCode() 메서드를 구현하는 데 필요한 IEqualityComparer 인터페이스만 사용할 수 있습니다. 이 접근 방식은 지루하고 번거로울 수 있습니다.

람다 표현식 기반 해결 방법

필요한 Lambda 구문과 일치하는 기존 확장 방법은 없지만 창의적인 해결 방법으로 유사한 효과를 얻을 수 있습니다. GroupBy() 및 Select()를 사용하면 열거 가능한 개체를 변환할 수 있습니다.

<code class="language-csharp">IEnumerable<customer> filteredList = originalList
  .GroupBy(customer => customer.CustomerId)
  .Select(group => group.First());</code>
로그인 후 복사

지정된 키로 요소를 그룹화하고 각 그룹에서 첫 번째 요소를 선택하면 GroupBy()에 제공된 Lambda 표현식을 기반으로 고유한 목록을 효과적으로 생성할 수 있습니다.

람다식 기반 등식 문제

람다 식 기반 같음 비교기는 특정 유형(예: 문자열)에 대해 예기치 않은 동작을 일으킬 수 있다는 점에 유의하는 것이 중요합니다. 고유한 작업을 안정적으로 수행하려면 GetHashCode()의 정확하고 일관된 구현이 보장되어야 합니다.

더 많은 정보

.NET 수석 설계자 Anders Hejlsberg는 람다 표현식 기반 Distinct() 오버로드의 제한 사항에 대해 설명합니다. 이는 Distinct() 내부의 해시 테이블이 제대로 작동하려면 Equals()와 GetHashCode() 사이에 간격이 필요하기 때문입니다.

위 내용은 C#에서 람다 표현식을 사용하여 고유 목록을 효율적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿