메모리 목록 엔티티 중 일부를 .contains (subselect) 쿼리와 비교하여 새 사용자가 오래된 것을 걸러냅니다.이 linq를 객체 쿼리에 최적화하는 방법은 무엇입니까?
성능 문제를 확인 내가 이것을보고 :
새 목록이 쿼리를 최적화 할 수있는 방법이 500 ~ 100까지 다양 동안 oldList 대부분, 그들 주위에있는 1000 명의 사용자를 가지고? 대신 검사의 O (N)으로,
가// Change string to whatever the type of UserID is.
var oldUserSet = new HashSet<string>(oldList.Select(o => o.UserID));
var newUsers = NewList.Where(n => !oldUserSet.Contains(n.UserID))
.ToList();
HashSet
의 수납 확인이 (1) 몇 해시 충돌 가정 O이어야 -
1 개의 대답을 허용합니다. 그걸 개선하고 싶을 수도 있습니다. 또한 어떤 부가 기능이 해당 통계를 제공합니까? – Yuck
vs2010의 성능 프로파일 러를 사용했는데, 최종 버전이 제공됩니다. –