private void AttachItem(SortedDictionary <TKey, ObservableCollection <TItem> > searchTree, TItem item) { var lambdaResult = keySelector.InvokeTagged <SequenceInfo>(item, new SequenceInfo() { Item = item, SearchTree = searchTree }); lambdaResult.ValueChanged += KeySelectorValueChanged; Stack <TaggedObservableValue <TKey, SequenceInfo> > lambdaStack; if (!lambdaResults.TryGetValue(item, out lambdaStack)) { lambdaStack = new Stack <TaggedObservableValue <TKey, SequenceInfo> >(); lambdaResults.Add(item, lambdaStack); } lambdaStack.Push(lambdaResult); ObservableCollection <TItem> itemSequence; if (!searchTree.TryGetValue(lambdaResult.Value, out itemSequence)) { itemSequence = new ObservableCollection <TItem>(); searchTree.Add(lambdaResult.Value, itemSequence); manualNotifier.NotifyAddItem(itemSequence); } itemSequence.Add(item); }
private void AttachItem(TItem item) { TaggedObservableValue <TKey, Multiplicity <TItem> > lambdaResult; if (!lambdas.TryGetValue(item, out lambdaResult)) { lambdaResult = keySelector.InvokeTagged <Multiplicity <TItem> >(item); lambdaResult.ValueChanged += LambdaChanged; lambdas.Add(item, lambdaResult); } lambdaResult.Tag = new Multiplicity <TItem>(item, lambdaResult.Tag.Count + 1); ObservableCollection <TItem> sequence; if (!searchTree.TryGetValue(lambdaResult.Value, out sequence)) { sequence = new ObservableCollection <TItem>(); searchTree.Add(lambdaResult.Value, sequence); manualRaiseSequences.NotifyAddItem(sequence); } sequence.Add(item); }