I want to compare the contents of two Dictionary<string, string>
instances regardless of the order of the items they contain. SequenceEquals
also compares the order, so I first order the dictionaries by key and then call SequenceEquals
.
Is there a method that I can use instead of SequenceEquals
that will only compare the contents?
If there isn't, is this the ideal way to do this?
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));
question from:https://stackoverflow.com/questions/3928822/comparing-2-dictionarystring-string-instances