示例#1
0
 public override void ReEvaluate()
 {
     foreach (KeyValuePair <TSource, GroupAndElement> pair in _outputShadowMap)
     {
         TSource         item = pair.Key;
         GroupAndElement info = pair.Value;
         MaybeMoveItem(item, info);
     }
 }
示例#2
0
        private void MaybeMoveItem(TSource item, GroupAndElement info)
        {
            TKey     newKey     = _keySelector(item);
            TElement newElement = _elementSelector(item);

            if (info.Group.Key.Equals(newKey) == false || info.Element.Equals(newElement) == false)
            {
                RemoveItem(item);
                AddItem(item, newElement);
            }
        }
示例#3
0
        private void AddItem(TSource item, TElement element)
        {
            TKey theKey = _keySelector(item);
            GroupedContinuousCollection <TKey, TElement> outputGroup;

            if (_groupMap.TryGetValue(theKey, out outputGroup) == false)
            {
                outputGroup = new GroupedContinuousCollection <TKey, TElement>(theKey, _comparer);
                this.OutputCollection.Add(outputGroup);
                _groupMap[theKey] = outputGroup;
            }
            try
            {
                outputGroup.IsSealed = false;
                outputGroup.Add(element);
            }
            finally
            {
                outputGroup.IsSealed = true;
            }
            _outputShadowMap[item] = new GroupAndElement(outputGroup, element);
        }