public override IEnumerator <KeyValuePair <TKey, TValue> > GetEnumerator() { using (var enumKeys = _myDictionary.EnumerateKeys()) { while (enumKeys.MoveNext()) { var key = enumKeys.Current; IEnumerator <TValue> enumValues; if (_myDictionary.TryEnumerateValuesForKey(key, out enumValues)) { using (enumValues) { while (enumValues.MoveNext()) { yield return(new KeyValuePair <TKey, TValue>(key, enumValues.Current)); } } } } } }
/// <summary> /// Enumerate all the values associated with key. /// </summary> /// <returns>An IEnumerator<TValue> that enumerates all the values associated with key.</returns> public override IEnumerator <TValue> GetEnumerator() { IEnumerator <TValue> values; return(_myDictionary.TryEnumerateValuesForKey(_key, out values) ? values : NoValues()); }