Как быстро проверить, имеют ли два объекта передачи данных одинаковые свойства в C #?

У меня есть эти объекты передачи данных:

public class Report 
{
    public int Id { get; set; }
    public int ProjectId { get; set; }
    //and so on for many, many properties.
}

Я не хочу писать

public bool areEqual(Report a, Report b)
{
    if (a.Id != b.Id) return false;
    if (a.ProjectId != b.ProjectId) return false;
    //Repeat ad nauseum
    return true;
}

Есть ли более быстрый способ проверить, имеют ли два объекта с единственными свойствами одинаковые значения (то, что не требует одной строки кода или одного логического выражения на свойство?)

Переключение на структуры не вариант.

Ответы на вопрос(5)

Ваш ответ на вопрос