У меня есть это, но это так коротка, я почти уверен, что я что-то не хватает:Как проверить, содержат ли два словаря одинаковые значения?
public static bool ValueEquals<TKey, TValue>
(this IDictionary<TKey, TValue> source, IDictionary<TKey, TValue> toCheck)
{
if (object.ReferenceEquals(source, toCheck))
return true;
if (source == null || toCheck == null || source.Count != toCheck.Count)
return false;
return source.OrderBy(t => t.Key).SequenceEqual(toCheck.OrderBy(t => t.Key));
}
Так в основном, если они имеют одинаковую ссылку, вернитесь true
. Если любой из них null
или их количество отличается, верните false
. Затем верните, если последовательности (упорядоченные по их ключам, а затем их значения) совпадают. I должен что-то упустить, поскольку он слишком короткий, чтобы быть достаточно хорошим.
Извините! Я случайно нажал кнопку! Это еще не закончено! –
Чтобы уточнить, вы хотите иметь одинаковые значения * для тех же клавиш *? (Заголовок вопроса только упоминает значения, которые отличаются.) –
@JonSkeet Я имел в виду значения как в общем смысле, а не в значении значения словаря. Поэтому, если у меня было два словаря 'string' и' bool', и они были '{" true ", true}, {" false ", false}", а другая была '{" false ", false}, { «true», true} ', они будут равны. Извините за двусмысленность. –