public override void Add(TIn item) { var oldStat = GetGroup(item); var oldValue = Tuple.Create(oldStat.Value, grouper(item)); if (sortedGroups.Contains(oldValue)) { sortedGroups.Remove(oldValue); } base.Add(item); }
private void TryUpdate(T item) { lock (reportLock) { var newFeature = featureSelector(item); if (features.ContainsKey(item)) { var oldFeature = features[item]; if (oldFeature.Equals(newFeature)) { return; } itemSet.Remove(Tuple.Create(oldFeature, item)); } features[item] = newFeature; itemSet.Add(Tuple.Create(newFeature, item)); } }