Como emular C # 6 nulo-condicional em C # <6

Com o C # 6.0 eu posso fazer isso

var isEqual = x.Id == y.Id
              && x.UpdatedAt == y.UpdatedAt
              && x.Name == y.Name                        
              && x.RulesUrl == y.RulesUrl
              && x.OngoingChallenges?.Count == y.OngoingChallenges?.Count
              && x.MembershipIds?.Count == y.MembershipIds?.Count;

Existe alguma solução legal para fazer isso com C # <6.0?

Quero dizer esta parte

&& x.OngoingChallenges?.Count == y.OngoingChallenges?.Count
&& x.MembershipIds?.Count == y.MembershipIds?.Count;

Porque em projetos antigos, não temos possibilidade de usar o C # 6.0. Como escreverisEqual eficientemente?

questionAnswers(3)

yourAnswerToTheQuestion