Je souhaite comparer le contenu de deux instances Dictionary<string, string>
sans tenir compte de l'ordre des éléments qu'elles contiennent. SequenceEquals
compare également la commande, donc je commande d'abord les dictionnaires par clé, puis appelez SequenceEquals
.Comparaison de 2 Dictionary <string, string> Instances
Existe-t-il une méthode que je peux utiliser au lieu de SequenceEquals
qui ne fera que comparer le contenu?
Si ce n'est pas le cas, est-ce le moyen idéal de le faire?
Dictionary<string, string> source = new Dictionary<string, string>();
Dictionary<string, string> target = new Dictionary<string, string>();
source["foo"] = "bar";
source["baz"] = "zed";
source["blah"] = null;
target["baz"] = "zed";
target["blah"] = null;
target["foo"] = "bar";
// sequenceEquals will be false
var sequenceEqual = source.SequenceEqual(target);
// contentsEqual will be true
var contentsEqual = source.OrderBy(x => x.Key).SequenceEqual(target.OrderBy(x => x.Key));
La question contient un très gros défaut. Il n'y a pas d'ordre dans lequel les éléments sont dans un dictionnaire. Par définition, un dictionnaire contient la clé des paires de valeurs sans aucun ordre implicite. – Zordid