¿Comparando dos diccionarios para datos iguales en c #?

Tengo dos diccionarios que contienen una clave de cadena y luego un objeto. El objeto contiene cinco campos. ¿Existe una manera elegante de garantizar que los dos diccionarios contengan las mismas claves y luego, si esto es correcto, contengan los mismos cinco campos por objeto?

¿Tendrían los dos diccionarios el mismo código hash incorporado o algo así?

EDIT, no parece estar trabajando para el siguiente código:

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;
    }

esto devuelve falso?

Respuestas a la pregunta(5)

Su respuesta a la pregunta