Porównywanie dwóch słowników pod kątem równych danych w c #?

Mam dwa słowniki zawierające klucz ciągu, a następnie obiekt. Obiekt zawiera pięć pól. Czy istnieje elegancki sposób, aby oba słowniki najpierw zawierały te same klucze, a następnie, jeśli jest to poprawne, zawierają te same pięć pól na obiekt?

Czy te dwa słowniki mają taki sam wbudowany kod hash czy coś takiego?

EDIT, wydaje się, że nie działa dla następującego kodu:

Dictionary<string, MyClass> test1 = new Dictionary<string, MyClass>();
Dictionary<string, MyClass> test2 = new Dictionary<string, MyClass>();

MyClass i = new MyClass("", "", 1, 1, 1, 1);
MyClass j = new MyClass("", "", 1, 1, 1, 1);

test1.Add("1", i);
test2.Add("1", j);

bool equal = test1.OrderBy(r => r.Key).SequenceEqual(test2.OrderBy(r => r.Key));

class MyClass
{
    private string a;
    private string b;
    private long? c;
    private decimal d;
    private decimal e;
    private decimal f;

    public MyClass(string aa, string bb, long? cc, decimal dd, decimal ee, decimal ff)
    {
        a= aa;
        b= bb;
        c= cc;
        d= dd;
        e= ee;
        f= ff;
    }

to zwraca false?

questionAnswers(5)

yourAnswerToTheQuestion