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; }
}