Enumerating directly over an IDictionary<TKey,TValue>returns a sequence of KeyValuePair structs:
public struct KeyValuePair <TKey, TValue> { public TKey Key { get; } public TValue Value { get; } }
Enumerating over a nongeneric IDictionary returns a sequence of DictionaryEntry structs:
public struct DictionaryEntry
{ public object Key { get; set; } public object Value { get; set; } }