사용자 지정 비교 연산을 사용하여 List<T>
에서 중복을 제거하려면 C# 메서드가 필요합니다. .NET 4. 거기에 하나 또는 직접 그것을 작성해야합니까?목록에서 중복을 제거하는 C# 메서드 <T>
2
A
답변
7
당신은 LINQ와 함께, 귀하의 비교 작업이 IEqualityComparer<T>
이거나로 변환 할 수있는 미세하고 가정 :
var newList = oldList.Distinct(customComparer).ToList();
는 물론 그 오히려 이전 하나의 요소를 제거하는 것보다 새로운 목록을 생성하고, 하지만 대부분의 경우 괜찮습니다.
6
당신은 Jon's answer으로 갈 수 ... 그렇지 않으면 당신은 항상 완전히 이후 새 목록으로 이전 목록의 내용을 대체 할 수있는, 또는 당신이 정말로 목록을 존재하는 에서 중복을 제거 할 경우,이 같은 뭔가 것 작업 :?
이public static void RemoveDuplicates<T>(this IList<T> list, IEqualityComparer<T> comparer = null)
{
comparer = comparer ?? EqualityComparer<T>.Default;
var uniques = new HashSet<T>(comparer);
for (int i = list.Count - 1; i >= 0; --i)
{
if (!uniques.Add(list[i]))
{
list.RemoveAt(i);
}
}
}
관련 문제
- 1. 목록 목록에서 중복을 제거 하시겠습니까?
- 2. 목록에서 반복하는 동안 목록에서 제거하는 C++
- 3. 정규식에서 중복을 제거하는 방법
- 4. 술어 개체에서 중복을 제거하는 방법?
- 5. int [] []에서 중복을 제거하는 방법
- 6. 중복을 찾아 제거하는 가장 쉬운 방법은 무엇입니까?
- 7. C++ 목록에서 중복 제거
- 8. AWK를 사용하여 이러한 중복을 제거하는 방법은 무엇입니까?
- 9. 집합에 의존하지 않고 객체 목록에서 중복을 제거합니다.
- 10. 다른 작업과 비교하여 한 목록에서 중복을 제거합니까?
- 11. 제대로 NHibernate에서 중복을 제거하는 데 도움이 필요
- 12. 정렬하지 않고 배열에서 중복을 제거하는 방법
- 13. 키만을 기반으로 해시 배열에서 중복을 제거하는 방법?
- 14. 목록에서 항목을 제거하는 BIF는 무엇입니까
- 15. C# List <> Add() 메서드 성능
- 16. 목록에서 많은 수의 개체를 제거하는 방법
- 17. Python의 목록에서 요소를 안전하게 제거하는 방법
- 18. 목록에서 이러한 중복 파일을 제거하는 방법 (파이썬)
- 19. 최대 절전 모드 목록에서 항목을 제거하는 방법
- 20. 왜 링크 된 목록에서 중복을 삭제하는 동안 '이전'을 유지 하시겠습니까?
- 21. Ocaml - 목록에서 중복을 확인할 때 매개 변수 유형
- 22. 목록에서 findall <T>
- 23. 목록에서 검색 <DataRow>?
- 24. Python에서 mechnize를 사용하여 genrated 링크에서 중복을 제거하는 방법?
- 25. vb.net의 데이터 테이블에있는 모든 중복을 제거하는 방법은 무엇입니까?
- 26. 중복을 제거하는 동안 Access에서 두 테이블을 병합하는 방법은 무엇입니까?
- 27. PHP에서 문자열에서 중복을 제거하십시오
- 28. 목록에서 항목 제거 - C#
- 29. 여러 Colorbox 메서드 호출에서 반복을 제거하는 jQuery
- 30. 중복을 제거하기 위해 C# group by
왜 안'oldList = oldList.Distinct (customComparer) .ToList()가 않는다'는 나쁜 새 목록의 Mr.Skeet을 만드는 피하기 위해 작동하지 않을까요? – Bastardo
@ JohnnyCageWins - 새 목록 생성을 막지는 않겠지 만, 기존 목록에 대한 참조를 새 목록에 대한 참조로 덮어 씁니다. –
@ Jonas H 뭐라고 요? 진심 으로요? 예전 목록을 덮어 쓰는 데있어 메모리 흐름이 매우 잘못되었다고 생각합니다. 나는 '올드리스트'를 사용하면 창작 할 필요가 없다고 생각했습니다. 어떤 방법이 있습니까? 고마워요. Mr.H . – Bastardo