En supposant que les clés et les valeurs de dictionnaire ont leurs égales et leurs méthodes de hachage implémentées correctement, quelle est la manière la plus succincte et la plus efficace de tester l'égalité de deux dictionnaires?
Dans ce contexte, deux dictionnaires sont dits égaux s'ils contiennent le même ensemble de clés (ordre non important), et pour chaque clé, ils s'accordent sur la valeur.
voici quelques façons dont j'ai trouvé (il y en a probablement beaucoup plus):
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()));
}