private IChangeSet <T> UpdateResultList(IChangeSet <T> changes, List <ReferenceCountTracker <T> > sourceLists, ChangeAwareListWithRefCounts <T> resultList) { //child caches have been updated before we reached this point. foreach (var change in changes.Flatten()) { var item = change.Current; var isInResult = resultList.Contains(item); var shouldBeInResult = MatchesConstraint(sourceLists, item); if (shouldBeInResult) { if (!isInResult) { resultList.Add(item); } } else { if (isInResult) { resultList.Remove(item); } } } return(resultList.CaptureChanges()); }
private IChangeSet <T> UpdateResultList(IChangeSet <T> changes) { //child caches have been updated before we reached this point. changes.Flatten().ForEach(change => { var item = change.Current; var isInResult = _resultList.Contains(item); var shouldBeInResult = MatchesConstraint(item); if (shouldBeInResult) { if (!isInResult) { _resultList.Add(item); } } else { if (isInResult) { _resultList.Remove(item); } } }); return(_resultList.CaptureChanges()); }
private void ProcessItem(MergeContainer[] sourceLists, ChangeAwareListWithRefCounts <T> resultingList, T item) { //check whether the item should be removed from the list var isInResult = resultingList.Contains(item); var shouldBeInResult = MatchesConstraint(sourceLists, item); if (shouldBeInResult) { if (!isInResult) { resultingList.Add(item); } } else { if (isInResult) { resultingList.Remove(item); } } }