Prüfung auf Gleichheit zwischen Wörterbüchern in c #

Angenommen, die Gleichheits- und Hash-Methoden von Wörterbuchschlüsseln und -werten sind korrekt implementiert. Was ist die prägnanteste und effizienteste Methode, um die Gleichheit zweier Wörterbücher zu testen?

n diesem Zusammenhang werden zwei Wörterbücher als gleich bezeichnet, wenn sie denselben Satz von Schlüsseln enthalten (Reihenfolge nicht wichtig), und für jeden solchen Schlüssel stimmen sie über den Wert überei

Es gibt einige Möglichkeiten, die ich mir ausgedacht habe (wahrscheinlich gibt es noch viele weitere):

public bool Compare1<TKey, TValue>(
    Dictionary<TKey, TValue> dic1, 
    Dictionary<TKey,TValue> dic2)
{
    return dic1.OrderBy(x => x.Key).
        SequenceEqual(dic2.OrderBy(x => x.Key));
}

public bool Compare2<TKey, TValue>(
    Dictionary<TKey, TValue> dic1, 
    Dictionary<TKey, TValue> dic2)
{
    return (dic1.Count == dic2.Count && 
        dic1.Intersect(dic2).Count().
        Equals(dic1.Count));
}

public bool Compare3<TKey, TValue>(
    Dictionary<TKey, TValue> dic1, 
    Dictionary<TKey, TValue> dic2)
{
    return (dic1.Intersect(dic2).Count().
        Equals(dic1.Union(dic2).Count()));
}

Antworten auf die Frage(18)

Ihre Antwort auf die Frage