하여 목록을 필터링합니다 :어떻게 두 개의 목록이 다른 목록
List<myObject> mainList;
그리고이 조건에 의해 새 목록을 만들려고 노력하고있어
List<myObject> blackList;
다른 조건을 요소가해야 블랙리스트에 없다. 가 여기 내 시도 :
List<myObject> newList = mainList.Where(x => x.Id == 5 && !blackList.Contains(x)).ToList();
이 newList
하는 것은 루프 내부에서 발생되는 루프의 첫 번째 라운드에서, blackList
이 비어 있으며 blackList
약 200K 요소가 포함 된 두 번째 라운드에서, 작동합니다. 그리고 위의 행이 작동하면 다음 단계로 이동하지 않고 몇 분 동안 그대로 있습니다. blackList
에있는 요소를 가져 오지 않도록 필터링을보다 효율적으로 수행하려면 어떻게해야합니까? 감사.
같은 긴 목록에 대한 빠른/더 나은 구현'대신'목록 '의'HashSet의 채우기 . 'GetHashCode'는'Equals' (어쨌든 추천되는 것)뿐만 아니라 오버라이드 (override)해야합니다. –