私はこれを持っていますが、非常に短いので、何かが欠けていると確信しています:
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
ます。次に、シーケンス (キー、値の順) が同じ場合に戻ります。短すぎて十分ではないので、何かが足りないに違いありません。