Seu quadrado atirando um buraco redondo aqui.
Sua resposta PODE ser tão fácil quanto Contact.Phones.OrderBy ( @p => @p.SortOrder ) e cuidar de todos os seus telefones em um método Contact.SetPhone( phone, order ) que pode abranger qualquer lógica personalizada que você desejar.
Além disso, como isso é lógica de negócios e visão, seu armazenamento de persistência não deve estar ciente do que está acontecendo.