현재 동등 비교를 직접 정의 할 수있는 HashSet<T>
생성자는 HashSet<T>(IEqualityComparer<T> comparer)
생성자입니다. 이 EqualityComparer를 람다 (lambda)로 정의하고 싶습니다.사용자 정의 IEqualityCompare가 lambda로 정의 된 HashSet 생성자?
람다를 통해 비교자를 생성 할 수있는 클래스를 만든 this blog post을 찾은 다음 Except()와 같은 확장 메서드를 사용하여이 클래스의 생성을 숨 깁니다.
이제 생성자를 사용하여 같은 작업을 수행하려고합니다. 확장 메서드를 통해 생성자를 만들 수 있습니까? 아니면 어떻게 든 HashSet<T>(Func<T,T,int> comparer)
을 만들 수있는 다른 방법이 있습니까? 더 이상적으로
HashSet<FileInfo> resultFiles = new HashSet<FileInfo>(
srcPath.GetFiles(),
new LambdaComparer<FileInfo>(
(f1, f2) => f1.Name.SubString(10).Equals(f2.Name.SubString(10))));
또는
HashSet<FileInfo> resultFiles = new HashSet<FileInfo>(
srcPath.GetFiles(),
(f1, f2) => f1.Name.SubString(10).Equals(f2.Name.SubString(10)));
을 : 명확성을 위해
--UPDATE--
,이 (의 조각) 내가 달성하기 위해 노력하고있어의 자유 버전입니다
. 블로그에 댓글을 달았습니다. –